Leaguepedia | League of Legends Esports Wiki
Advertisement

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
Advertisement