Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.


This module allows wikitext to read values from data modules.

Usage

{{#invoke:Data|Module:ModuleName|key1|key2|key3|...}}

Read data value key1.key2.key3 from Module:ModuleName.



local mt = {}

function mt.__index(t, k)
	return function(frame)
		local success, data = pcall(mw.loadData, k)
		if not success then
			success, data = pcall(mw.loadJsonData, k)
			if not success then
				error("'" .. k .. "' is not a valid data page")
			end
		end
		for i, v in ipairs(frame.args) do
			local ty = type(data)
			if ty ~= 'table' then
				local args = {}
				for j = 1, i - 1 do
					args[j] = frame.args[j]
				end
				if frame.args.softfail then
					return '<span class="error">[[Category:Pages with failed Module:Data lookups]]Error: Tried to read index "' .. mw.text.nowiki(v) .. '" of mw.loadData("' .. mw.text.nowiki(k) .. '").' .. mw.text.nowiki(table.concat(args, '.')) .. ', which is a ' .. ty .. '</span>'
				else
					error('Tried to read index "' .. v .. '" of mw.loadData("' .. k .. '").' .. table.concat(args, '.') .. ', which is a ' .. ty)
				end
			end
			local nextdata = data[v]
			if nextdata == nil and tonumber(v) then
				data = data[tonumber(v)]
			else
				data = nextdata
			end
		end
		return data
	end
end

return setmetatable({}, mt)
Contents