Zum Inhalt springen

Modul:Verwaltungseinheit

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 29. Juni 2025 um 16:59 Uhr durch Zukunft99 (Diskussion | Beiträge).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch English

Modul: Dokumentation

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


local p = {}
local getArgs = require('Modul:Arguments').getArgs
local cfg = mw.loadData('Modul:Verwaltungseinheit/Liste');

local function link(frame)
	local args = getArgs(frame)
	local x = args[1]
	local y = args['q']
	local a = mw.ustring.find(x, '%(')
	local ante = args[2] and (args[2]..' ') or ''
	if y then
		name = a and mw.ustring.sub(x, 1, a-2) or x
		begriff = a and ' '..mw.ustring.sub(x, a) or ''
		label = ' '..y..begriff..'|'..name
	else
		if a then label = '|'..mw.ustring.sub(x, 1, a-2) elseif args[2] then label = '|'..args[1] else label = '' end
		name = x
	end
	return '[['..ante..name..label..']]'
end

function p.erste(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local except = args[2]
	local name = cfg.div[staat]
	local special = cfg.spname[except]
	if special and special['n1'] then return special['n1']
		elseif name and name[1] then return name[1]
		else return 'NAME'
	end
end

function p.erstelink(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local unit = args[2]
	local name = cfg.add[staat]
	if name and name['e1'] then x = name['e1'] end
	return link({unit, x})
end

function p.inter(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local name = cfg.div[staat]
	if name and name['b'] then return name['b']
		else return 'NAME'
	end
end

function p.intermed(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local unit = args[2]
	local name = cfg.add[staat]
	if name and name['b'] then return '[['..name['b']..' '..unit..'|'..unit..']]'
		else return unit
	end
end

function p.zweite(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local except = args[2]
	local first = args[3]
	local name = cfg.div[staat]
	local special = cfg.spname[except]
	local subname = cfg.altdiv[first]
	if special and special['n2'] then return special['n2']
		elseif special and special['a2'] then return '[['..special['a2']..']]'
		elseif subname then return subname[1]
		else return name[2]
	end
end

function p.zweitelink(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local unit = args[2]
	local first = args[3]
	local special = cfg.spname[unit]
	local alt = cfg.altadd[first]
	local name = cfg.add[staat]
	if (alt and (alt['f1'] or alt['f2']) and ((string.find(unit, alt['f1']) or string.find(unit, alt['f2'])))) or (name and (name['f1'] or name['f2']) and ((string.find(unit, name['f1']) or string.find(unit, name['f2'])))) then exception = true end
	local k = (special and special['a2']) and special['a2'] or ((alt and alt[1] and not exception) and alt[1] or ((name and name[1] and not exception) and name[1] or ''))
	local post = (name and name['danach2']) and name['danach2'] or ''
	return link({unit, k, q = post})
end

function p.dritte(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local except = args[2]
	local first = args[3]
	local name = cfg.div[staat]
	local special = cfg.spname[except]
	local subname = cfg.altdiv[first]
	if special and special['n3'] then return special['n3']
		elseif special and special['a3'] then return '[['..special['a3']..']]'
		elseif subname and subname[2] then return subname[2]
		else return name[3]
	end
end

function p.drittelink(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local unit = args[2]
	local first = args[3]
	local special = cfg.spname[unit]
	local alt = cfg.altadd[first]
	local name = cfg.add[staat]
	local k = (special and special['a3']) and special['a3'] or ((alt and alt[2]) and alt[2] or ((name and name[2]) and name[2] or ''))
	local post = (name and name['danach3']) and name['danach3'] or ''
	return link({unit, k, q = post})
end

function p.vierte(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local except = args[2]
	local first = args[3]
	local name = cfg.div[staat]
	local special = cfg.spname[except]
	local subname = cfg.altdiv[first]
	if special and special['n4'] then return special['n4']
		elseif special and special['a4'] then return '[['..special['a4']..']]'
		elseif subname and subname[3] then return subname[3]
		else return name[4]
	end
end

function p.viertelink(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local unit = args[2]
	local first = args[3]
	local special = cfg.spname[unit]
	local alt = cfg.altadd[first]
	local name = cfg.add[staat]
	local k = (special and special['a4']) and special['a4'] or ((alt and alt[3]) and alt[3] or ((name and name[3]) and name[3] or ''))
	local post = (alt and alt['danach4']) and alt['danach4'] or ''
	return link({unit, k, q = post})
end

function p.liste(frame)
	local root = mw.html.create('table'):addClass('wikitable sortable')
	root:tag('tr')
		:tag('th'):wikitext('Staat'):attr('rowspan', 2):done()
		:tag('th'):wikitext('Ebene'):attr('colspan', 4):done()
	root:tag('tr')
		:tag('th'):wikitext('1. Ebene'):done()
		:tag('th'):wikitext('2. Ebene'):done()
		:tag('th'):wikitext('3. Ebene'):done()
		:tag('th'):wikitext('4. Ebene'):done()

	local staat = {}
	for k, v in pairs(cfg.div) do
		staat[#staat+1] = k
	end

	table.sort(staat)
	for _, value in pairs(staat) do
		local ebene = cfg.div[value]
		
	root:tag('tr')
		:tag('td'):wikitext('[['..value..']]'):done()
		:tag('td'):wikitext(ebene[1]):done()
		:tag('td'):wikitext(ebene[2]):done()
		:tag('td'):wikitext(ebene[3]):done()
		:tag('td'):wikitext(ebene[4]):done()
	end
	return root
end

return p