Modul:Verwaltungseinheit
Erscheinungsbild
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