Модуль:Cache
Перейти к навигации
Перейти к поиску
Документация
Документация для этого модуля отсутствует. Создать её
local trim = mw.text.trim
local ugsub = mw.ustring.gsub
local cache = require 'mw.ext.LuaCache'
local VariablesLua = mw.ext.VariablesLua
local args_table -- cache
-- helper function
local getArg = function(key)
--Note: unnamed parameters will not be auto trimmed and named parameters will.
local value = trim(args_table[key] or '')
return (value ~= '') and value or nil
end
local getCacheKey = function()
return getArg(1) or getArg('key')
end
-- A simple wrap for LuaCache
return {
-- get
-- return cached value or nothing
get = function(frame)
args_table = frame.args
local result = cache.get(getCacheKey())
if result then
return tostring(result)
end
end,
-- get & replace
-- return cached value with all tokens replaced, or nothing
getreplace = function(frame)
args_table = frame.args
local result = cache.get(getCacheKey())
if not result then
return
end
result = tostring(result)
for token, replace in pairs(getArg('passargs') and frame:getParent().args or args_table) do
if mw.ustring.sub(token, 1, 1) == '$' then
-- escape, to perform plain text replacement. see Module:String
result = ugsub(result, (ugsub(token, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1")), (ugsub(replace, "%%", "%%%%" ))) -- () to force return only 1 value.
end
end
return result
end,
-- set
-- return 'true' or '' if $return or $4 = true
set = function(frame)
args_table = frame.args
local result = cache.set(getCacheKey(), getArg(2) or getArg('value'), tonumber(getArg(3) or getArg('exptime')))
if getArg('return') or getArg(4) then
return result or ''
end
end,
-- set, then get and replace
-- store value to cache then return the value with all tokens replaced.
setreplace = function(frame)
args_table = frame.args
local str = getArg(2) or getArg('value')
cache.set(getCacheKey(), str, tonumber(getArg(3) or getArg('exptime')))
for token, replace in pairs(getArg('passargs') and frame:getParent().args or args_table) do
if mw.ustring.sub(token, 1, 1) == '$' then
-- escape, to perform plain text replacement. see Module:String
str = ugsub(str, (ugsub(token, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1")), (ugsub(replace, "%%", "%%%%" )))
end
end
return str
end,
-- delete
-- return 'true' or '' if $return or $2 = true
delete = function(frame)
args_table = frame.args
local result = cache.delete(getCacheKey())
if getArg('return') or getArg(2) then
return result or ''
end
end,
}