Zum Inhalt springen

Modul:Verwaltungseinheit

aus Wikipedia, der freien Enzyklopädie
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 unit = args[2]
	local name = cfg.div[staat]
	local special = cfg.spname[unit]
	if special and special['n1'] then return special['n1']
		elseif name and name['n1'] then return name['n1']
		else return 'NAME'
	end
end

function p.erstelink(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local unit = args[2]
	local name = cfg.div[staat]
	local special = cfg.spname[unit]
	if special and special['a1'] then x = special['a1']
		elseif name and name['a1'] then x = name['a1']
		end
	local post = (name and name['nach1']) and name['nach1'] or ''
	return link({unit, x, q = post})
end

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

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

function p.zweite(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local except = args[2]
	local historische = args['h']
	local first = args['e']
	local name = cfg.div[staat]
	local special = cfg.spname[except]
	local altname = cfg.altdiv[first]
	if historische then return name['n2']
		elseif special and (special['n2'] or special['b2']) then return special['n2'] or '[['..special['b2']..']]'
		elseif altname then return altname['n2']
		else return name['n2']
	end
end

function p.zweitelink(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local unit = args[2] or args['h']
	local first = args['e']
	local special = cfg.spname[unit]
	local alt = cfg.altdiv[first]
	local name = cfg.div[staat]
	if (alt and (alt['z1'] or alt['z2']) and ((string.find(unit, alt['z1']) or string.find(unit, alt['z2'])))) or (name and (name['z1'] or name['z2']) and ((string.find(unit, name['z1']) or string.find(unit, name['z2'])))) then exception = true end
	local k = (special and (special['a2'] or special['b2'])) or ((alt and alt['a2'] and not exception) and alt['a2'] or ((name and name['a2'] and not exception) and name['a2'] or ''))
	local post = (name and name['nach2']) and name['nach2'] 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['e']
	local name = cfg.div[staat]
	local special = cfg.spname[except]
	local altname = cfg.altdiv[first]
	if special and (special['n3'] or special['b3']) then return special['n3'] or '[['..special['b3']..']]'
		elseif altname and altname['n3'] then return altname['n3']
		else return name['n3']
	end
end

function p.drittelink(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local unit = args[2]
	local first = args['e']
	local special = cfg.spname[unit]
	local alt = cfg.altdiv[first]
	local name = cfg.div[staat]
	local k = (special and (special['a3'] or special['b3'])) or ((alt and alt['a3']) and alt['a3'] or ((name and name['a3']) and name['a3'] or ''))
	local post = (name and name['nach3']) and name['nach3'] 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['e']
	local name = cfg.div[staat]
	local special = cfg.spname[except]
	local altname = cfg.altdiv[first]
	if special and (special['n4'] or special['b4']) then return special['n4'] or '[['..special['b4']..']]'
		elseif altname and altname['n4'] then return altname['n4']
		else return name['n4']
	end
end

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

function p.fuenfte(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local except = args[2]
	local first = args['e']
	local name = cfg.div[staat]
	local special = cfg.spname[except]
	local altname = cfg.altdiv[first]
	if special and (special['n5'] or special['b5']) then return special['n5'] or '[['..special['b5']..']]'
		elseif altname and altname['n5'] then return altname['n5']
		else return name['n5']
	end
end

function p.fuenftelink(frame)
	local args = getArgs(frame)
	local staat = args[1]
	local unit = args[2]
	local first = args['e']
	local special = cfg.spname[unit]
	local alt = cfg.altdiv[first]
	local name = cfg.div[staat]
	local k = (special and (special['a5'] or special['b5'])) or ((alt and alt['a5']) and alt['a5'] or ((name and name['a5']) and name['a5'] or ''))
	local post = (alt and alt['nach5']) and alt['nach5'] 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('1.'):attr('colspan', 2):done()
		:tag('th'):wikitext('2.'):attr('colspan', 2):done()
		:tag('th'):wikitext('3.'):attr('colspan', 2):done()
		:tag('th'):wikitext('4.'):attr('colspan', 2):done()
		:tag('th'):wikitext('5.'):attr('colspan', 2):done()
	root:tag('tr')
		:tag('th'):wikitext('Name Link'):done()
		:tag('th'):wikitext('Apposition'):done()
		:tag('th'):wikitext('Name Link'):done()
		:tag('th'):wikitext('Apposition'):done()
		:tag('th'):wikitext('Name Link'):done()
		:tag('th'):wikitext('Apposition'):done()
		:tag('th'):wikitext('Name Link'):done()
		:tag('th'):wikitext('Apposition'):done()
		:tag('th'):wikitext('Name Link'):done()
		:tag('th'):wikitext('Apposition'):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 wert = cfg.div[value]
		
	root:tag('tr')
		:tag('td'):wikitext('[['..value..']]'):done()
		:tag('td'):wikitext(wert['n1']):done()
		:tag('td'):wikitext(wert['a1'] or wert['nach1']):done()
		:tag('td'):wikitext(wert['n2']):done()
		:tag('td'):wikitext(wert['a2'] or wert['nach2']):done()
		:tag('td'):wikitext(wert['n3']):done()
		:tag('td'):wikitext(wert['a3'] or wert['nach3']):done()
		:tag('td'):wikitext(wert['n4']):done()
		:tag('td'):wikitext(wert['a4'] or wert['nach4']):done()
		:tag('td'):wikitext(wert['n5']):done()
		:tag('td'):wikitext(wert['a5'] or wert['nach5']):done()
	end
	return root
end

return p