Строка 17: |
Строка 17: |
| local radically_wikify = require 'Module:RadicalWikifier'.run | | local radically_wikify = require 'Module:RadicalWikifier'.run |
| | | |
| + | local function memoize (func) |
| + | local memoized = {} |
| + | return function (...) |
| + | local args = {...} |
| + | if not memoized [args] then |
| + | memoized [args] = func (...) |
| + | end |
| + | return memoized [args] |
| + | end |
| + | end |
| + | |
| -- Локаль: | | -- Локаль: |
| local function convert_flags (flags) | | local function convert_flags (flags) |
Строка 98: |
Строка 109: |
| return '[[' .. decode (page) .. '|' .. alias .. ']]'; | | return '[[' .. decode (page) .. '|' .. alias .. ']]'; |
| end, | | end, |
− | internalise = function (url, alias) | + | internalise = memoize (function (url, alias) |
| local property = 'URL источника' | | local property = 'URL источника' |
| local pages = ask { '[[' .. property .. '::' .. url ..']]', '?#-', limit = 1 } | | local pages = ask { '[[' .. property .. '::' .. url ..']]', '?#-', limit = 1 } |
Строка 108: |
Строка 119: |
| end | | end |
| return '[' .. url .. ' ' .. alias .. ']' | | return '[' .. url .. ' ' .. alias .. ']' |
− | end, | + | end), |
| char = function (_, s) | | char = function (_, s) |
| return char (tonumber (sub (s, -4), 16)) | | return char (tonumber (sub (s, -4), 16)) |