Modul:Data/CH-AG/1

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus


local p = {}
local currentVersion = 1
local tVer = {
	["2016-"] = 1,
}

function p.getData(tArgs)
	if type(tArgs) == type({}) then
		if not tonumber(tArgs.version) then
			tArgs.versionDate = tArgs.version
		end
		tArgs.version = tVer[tArgs.versionDate] or tonumber(tArgs.version) or tArgs.current and currentVersion
		if tArgs.version then
			local b, tSub = pcall(require, "Module:Data/CH-AG/1/" .. tArgs.version)
			if type(tSub) == type({}) then
				if tSub.getData then
					return tSub.getData(tArgs)
				else
					tArgs.versionError = tArgs.versionError or "[[Module:Data/CH-AG/1/" .. tArgs.version .."]].getData"
					return tArgs.versionError
				end
			else
				tArgs.versionError = tArgs.versionError or "[[Module:Data/CH-AG/1/" .. tArgs.version .."]]"
				return tArgs.versionError
			end
		else
			local s = '{| class="wikitable"\n!versionDate\n!version\n'
			local t = {}
			for i, v in pairs(tVer) do
				t[#t + 1] = {v, i}
			end
			table.sort(t, function(t1, t2) return t1[1] < t2[1] or t1[1] == t2[1] and t1[2] < t2[2] end)
			for i, v in ipairs(t) do
				s = s .. "|-\n|" .. v[2] .. "\n|" .. v[1] .. "\n"
			end
			return s .. "|}"
		end
	else
		return '<span class="error">tArgs = {}</span>'
	end
end

function p.invokeData(frame)
	local t = {}
	t.version = frame.args[1] or frame.args["version"]
	t.key = frame.args[2] or frame.args["key"]
	t.field = frame.args[3] or frame.args["field"]
	for i, v in pairs(frame.args) do
		t[i] = t[i] or v
	end
	return p.getData(t)
end

return p