Edit the documentation or categories for this module.
local util_args = require ('Module:ArgsUtil')
local binser = require('binser')
local p = {}
function p.getVar(var)
local val = mw.getCurrentFrame():callParserFunction('#var', var)
if val == '' then
return nil
end
return val
end
function p.getBool(var)
local val = p.getVar(var)
return util_args.castAsBool(val)
end
function p.setBool(var, val)
local bool = util_args.castAsBool(val)
if bool then
p.setVar(var, 'Yes')
else
p.setVar(var, 'No')
end
return bool
end
function p.setVar(var, val)
mw.getCurrentFrame():callParserFunction('#vardefine:' .. var, val)
return val
end
function p.setVarOnlyIf(var, val)
if not val then return end
p.setVar(var, val)
end
function p.getGlobalIndex(name)
local val = p.getVar('luaGlobalIndex' .. name)
return tonumber(val or 0) or 0
end
function p.setGlobalIndex(name)
local n = p.getGlobalIndex(name) + 1
p.setVar('luaGlobalIndex' .. name, n)
return n
end
function p.resetGlobalIndex(name, val)
val = val or 0
p.setVar('luaGlobalIndex' .. name, val)
return val
end
function p.appendToList(name, val, sep)
-- this is just for helping to debug and shouldn't actually be used ever probably
sep = sep or ', '
local old_val = p.getVar(name)
p.setVar(name, old_val .. sep .. val)
end
function p.log(val)
p.appendToList('log', val)
end
function p.clearAll(tbl)
for _, v in ipairs(tbl) do
p.setVar(v, '')
end
end
function p.setTypedVar(var, val)
local val_to_store = binser.serialize(val)
p.setVar(var, val_to_store)
end
function p.getTypedVar(var)
local val = p.getVar(var)
if not val then
return nil
end
return binser.deserialize(val)[1]
end
function p.setObject(var, val)
local val_to_store = binser.serialize(val)
p.setVar(var, val_to_store)
end
function p.getObject(var)
local val = p.getVar(var)
if not val then
return nil
end
return binser.deserialize(val)[1]
end
return p