July 25, 2020

👭 Knight Challenge #11 👬

Want to try your hand at these challenges? There's a couple of things you can do!
From writing, to research, to images, find your preferred way to contribute with our eleventh theme: Couples!

Latest Announcements

Module:UtilsVar

From Zelda Wiki, the Zelda encyclopedia
Jump to: navigation, search

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)
	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
	}
end

return p