Изменения

memoize
Строка 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))