Module:Cache

local trim = mw.text.trim local ugsub = mw.ustring.gsub local cache = require 'mw.ext.LuaCache'

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

-- A simple wrap for LuaCache

return { -- get -- return cached value or nothing get = function(frame) args_table = frame.args local result = cache.get(getArg(1) or getArg('key')) 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(getArg(1) or getArg('key')) if not result then return end result = tostring(result) for token, replace in pairs(args_table) do			if mw.ustring.sub(token, 1, 1) == '$' then -- escape, to perform plain text replacement. see Module:String token = ugsub(token, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1") replace = ugsub(replace, "%%", "%%%%" ) result = ugsub(result, token, replace) -- Note: gsub returns 2 values, so result = gsub(str, gsub(token), gsub(replace)) won't work. 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(getArg(1) or getArg('key'), getArg(2) or getArg('value'), 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(getArg(1) or getArg('key'), str, getArg(3) or getArg('exptime'))

for token, replace in pairs(args_table) do			if mw.ustring.sub(token, 1, 1) == '$' then -- escape, to perform plain text replacement. see Module:String token = ugsub(token, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1") replace = ugsub(replace, "%%", "%%%%" ) str = ugsub(str, token, 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(getArg(1) or getArg('key')) if getArg('return') or getArg(2) then return result or '' end end,

}