Zelda Wiki

Want to contribute to this wiki?
Sign up for an account, and get started!

Come join the Zelda Wiki community Discord server!

READ MORE

Zelda Wiki
No edit summary
(EPF counter not needed for now)
 
Line 38: Line 38:
 
limit = limit
 
limit = limit
 
}
 
}
end
 
 
function p.expensiveParserFunctionCounter()
 
return p.counter("expensiveParserFunctions", 90) -- limit is 100 but this gives is buffer for calls not tracked through this counter
 
 
end
 
end
   

Latest revision as of 12:15, 27 October 2020

This module allows for data to be shared between invocations of a module on a given page, using Extension:VariablesLua. Use cases for this include counters and previewing Cargo storage.

Not to be confused with Module:UtilsArg.


local p = {}

VariablesLua = mw.ext.VariablesLua

function p.set(name, val)
	local json = mw.text.jsonEncode(val)
	VariablesLua.vardefine(name, json)
end

function p.get(name)
	local json = VariablesLua.var(name)
	if json == "" then
		return nil
	end
	local val = mw.text.jsonDecode(json)
	return val
end

function p.add(name, val)
	local array = p.get(name) or {}
	table.insert(array, val)
	p.set(name, array)
	return array
end

function p.counter(name, limit)
	name = name or ""
	return {
		increment = function()
			local val = p.get(name) or 0
			val = val + 1
			p.set(name, val)
			return val
		end,
		value = function()
			return p.get(name) or 0
		end,
		limit = limit
	}
end

return p