Module:VarsUtil
From Tardis Wiki, the free Doctor Who reference
Documentation for this module may be created at Module:VarsUtil/doc
-- from https://thealchemistcode.fandom.com/wiki/Module:VarsUtil
local util_args = require ('Module:ArgsUtil')
local binser = require('binser')
local VariablesLua = mw.ext.VariablesLua
do -- Remove when extension is installed.
VariablesLua = VariablesLua or {
var = function(var, default)
return mw.getCurrentFrame():callParserFunction('#var', var, default)
end,
vardefine = function(var, val)
return mw.getCurrentFrame():callParserFunction('#vardefine', var, val)
end,
vardefineecho = function(var, val)
return mw.getCurrentFrame():callParserFunction('#vardefineecho', var, val)
end,
}
end
local p = {}
function p.getVar(var)
local val = VariablesLua.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)
if type(val) == 'string' then
val = util_args.castAsBool(val)
end
if val then
p.setVar(var, 'Yes')
return
end
p.setVar(var, 'No')
end
function p.setVar(var, val)
VariablesLua.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) or ''
p.setVar(name, old_val .. sep .. val)
end
function p.log(val)
if type(val) == 'table' then
p.logObject(val)
return
end
p.appendToList('log', tostring(val))
end
function p.logObject(val)
local tbl = {}
for k, v in pairs(val) do
tbl[#tbl+1] = k .. ': ' .. tostring(v)
end
p.appendToList('log', table.concat(tbl,', '))
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