Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

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


local p = {}
local tData = {
	["rootfield"] = {
		["access date"] = "2017-02-20",
		["Einwohnerzahlen date"] = "2013-01-01",
		["page"] = "http://www.vgem-marktheidenfeld.de/verwalt/EWzahlen.htm",
		["publisher"] = "Verwaltungsgemeinschaft Marktheidenfeld",
		["title"] = "Entwicklung der Einwohnerzahlen seit 1981",
		["url"] = "http://www.vgem-marktheidenfeld.de/verwalt/EWzahlen.htm",
	},
	["value"] = {
		["Birkenfeld"]=1636,
		["Billingshausen"]=512,
		["Gemeinde Birkenfeld"]=2148,
		["Bischbrunn"]=942,
		["Oberndorf"]=898,
		["Gemeinde Bischbrunn"]=1840,
		["Erlenbach"]=1791,
		["Tiefenthal"]=625,
		["Gemeinde Erlenbach"]=2416,
		["Esselbach"]=903,
		["Kredenbach"]=625,
		["Steinmark"]=511,
		["Gemeinde Esselbach"]=2039,
		["Hafenlohr"]=1404,
		["Windheim"]=489,
		["Gemeinde Hafenlohr"]=1893,
		["Karbach"]=1441,
		["Roden"]=542,
		["Ansbach"]=472,
		["Gemeinde Roden"]=1014,
		["Rothenfels"]=370,
		["Bergrothenfels"]=623,
		["Stadt Rothenfels"]=993,
		["Urspringen"]=1389,
		["VG"]=15173,
	},
	["valuefield"] = {
		[""] = 1,
		["Einwohnerzahlen"] = 1,
	},
}

function p.getData(tArgs)
	if type(tArgs) == type({}) then
		local sArgs ="\n* fieldError\n* keyError\n* arg1"
		local tClip = {tData["value"][tArgs.key]}
		if tArgs.tryOther and not tClip then
			local b, tSub = pcall(require, "Module:Data/DE-096775621/1/32")
			if type(tSub) == type({}) and tSub.getData then
				return tSub.getData(tArgs)
			end
		end
		tArgs.field = tArgs.field or ""
		if tData["rootfield"][tArgs.field] then
			return tData["rootfield"][tArgs.field]
		elseif tArgs.field == "field list" then
			local s = "* field list\n*key table" .. sArgs
			local t = {}
			for i, v in pairs(tData["rootfield"]) do
				t[#t + 1] = i
			end
			table.sort(t)
			for i, v in pairs(t) do
				s = s .. "\n* " .. v
			end
			t = {}
			for i, v in pairs(tData["valuefield"]) do
				t[#t + 1] = i
			end
			table.sort(t)
			for i, v in pairs(t) do
				s = s .. "\n* " .. v
			end
			return s
		elseif tArgs.field == "key table" then
			local s = '{| class="wikitable"\n!key\n'
			local t = {}
			for i, v in pairs(tData["value"]) do
				t[#t + 1] = {i}
			end
			table.sort(t, function(t1 ,t2) return t1[1] < t2[1] end)
			for i, v in pairs(t) do
				s = s .. "|-\n|" .. v[1] .. "\n"
			end
			return s .. "|}"
		elseif (sArgs .. "\n"):find("\n* " .. tArgs.field .. "\n", 1 ,true) then
			return tArgs[tArgs.field]
		elseif not tClip then
			tArgs.keyError = tArgs.keyError or '<span class="error">key = ""</span>'
			return tArgs.keyError
		elseif tData["valuefield"][tArgs.field] then
			return tClip[tData["valuefield"][tArgs.field]]
		else
			tArgs.fieldError = tArgs.fieldError or '<span class="error">field = "field list"</span>'
			return tArgs.fieldError
		end
	else
		return '<span class="error">tArgs = {}</span>'
	end
end

function p.invokeData(frame)
	local t = {}
	t.key = frame.args[1] or frame.args["key"]
	t.field = frame.args[2] 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