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 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