Modul:Partei
Modul:Partei
| Vorlagenprogrammierung | Diskussionen | Lua | Unterseiten | |||
| Modul | Deutsch | English
|
Modul: | Dokumentation | ||
Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus
local p = {}
local cfg = mw.loadData('Modul:Partei/Liste');
local cfx = mw.loadData('Modul:Partei/Akronyme');
local getArgs = require('Modul:Arguments').getArgs
-- §1 DELINK
local function delink(partei)
local a = mw.text.decode(partei)
local wl = mw.ustring.find(a,'%[%[')
if wl then
local b = mw.ustring.sub(a, wl+2)
local ende = mw.ustring.find(b, '%]%]')
local ohne = mw.ustring.sub(a, wl+2, wl+ende)
local label = mw.ustring.find(ohne, '%|')
if label then
a = mw.ustring.sub(ohne, 0, label-1)
else
a = ohne
end
else a = partei
end
return a
end
-- §2 PARTEINAME/AKRONYM
function p.name(frame)
local args = getArgs(frame)
local partei = args[1]
local land = args[2]
if land then
kom = land..';'..partei
full = cfx.akronym[kom]
if full then return full[1]
else return args[1]
end
else
return delink(args[1])
end
end
-- §3 STANDARD/ALTERNATIVE FARBE
function p.farbe(frame)
local args = getArgs(frame)
local partei = p.name({args[1], args[2]})
partei = cfg.altname[partei] or partei
local farbe = cfg.info[partei] or ''
local variante = args['V']
local color = (args['V'] == 'A' or args['V'] == 'HA' or mw.ustring.find(args[1],' ')) and farbe[3] or farbe[1]
return color or 'DABAD0'
end
-- §4: HELLERE FARBE: STANDARD/ALTERNATIVE FARBE
function p.hell(frame)
local args = getArgs(frame)
local opaz = tonumber(args['h']) or 0.2
local farbe = args['col'] or p.farbe(frame)
local cls = {}
if (farbe:len() == 6) then
cls[1] = tonumber(farbe:sub(1,2),16) or 255
cls[2] = tonumber(farbe:sub(3,4),16) or 255
cls[3] = tonumber(farbe:sub(5,6),16) or 255
end
cls[1] = 255 - math.floor((255-cls[1])*opaz)
cls[2] = 255 - math.floor((255-cls[2])*opaz)
cls[3] = 255 - math.floor((255-cls[3])*opaz)
return string.format('%02X%02X%02X',cls[1],cls[2],cls[3])
end
-- §5 PARTEIFARBEZELLE
function p.parteifarbezelle(frame)
local args = getArgs(frame)
local rowspan = tonumber(args['rowspan']) or 1
local colspan = tonumber(args['colspan']) or 1
if args['V'] == 'H' or args['V'] == 'HA' then hellere = true end
local farbe = '#'..(hellere and p.hell(frame) or p.farbe(frame))
local zelle = 'rowspan="%s" colspan="%s" style="color:inherit; background:%s;"'
return string.format(zelle, rowspan, colspan, farbe)
end
-- §6: CUT
local function cut(a)
local link = mw.ustring.find(a, '%[%[')
if link then return a else
local begriff = mw.ustring.find(a, '%s%(')
if begriff then return mw.ustring.sub(a, 1, begriff)
else return a
end
end
end
-- §7 PARTEINAMEFARBE
function p.parteinamefarbe(frame)
local args = getArgs(frame)
local farbe = '#' .. p.farbe(frame)
local spaltef = 'rowspan="%s" style="width:2px; color:inherit; background:%s;"|\n'
local spaltek = '| scope="row" rowspan="%s" colspan="%s" style="text-align:left;"|%s\n'
local spaltep = '| scope="row" rowspan="%s" colspan="%s" style="text-align:left;"|%s'
local rowspan = tonumber(args['rowspan']) or 1
local colspan = tonumber(args['colspan']) or 1
spaltef = string.format(spaltef, rowspan, farbe)
if args['k'] then spaltek = string.format(spaltek, rowspan, colspan, args['k']) end
spaltep = string.format(spaltep, rowspan, colspan, cut(args[1]))
if args['k'] then return(spaltef..spaltek..spaltep) else
return (spaltef..spaltep) end
end
-- §8 PARTEIFARBEZEILE
function p.parteifarbezeile(frame)
local args = getArgs(frame)
local rowspan = tonumber(args.rowspan) or 1
local colspan = tonumber(args.colspan) or 1
local width = (tonumber(args['w']) or 0) .. 'px'
local farbe = '#' .. (args['f'] or p.farbe(frame))
local zeile = 'rowspan="%s" colspan="%s" style="border-bottom:3px solid; border-bottom-color:%s; width:%s"|' .. (args['k'] or cut(args[1])) .. '\n'
return string.format(zeile, rowspan, colspan, farbe, width)
end
-- §9 PARTEILEGENDE
function p.parteilegende(frame)
local args = getArgs(frame)
local farbe = p.farbe(frame)
local legende = '<span style="border-left:1.2em solid;border-left-color:#'..(args['f'] or farbe)..';margin-right:4px"></span>'.. (args['k'] or cut(args[1]))
return legende
end
-- §10 PARTEISITZE
function p.parteisitze(frame)
local args = getArgs(frame)
local pagename = mw.title.getCurrentTitle().prefixedText
local color = args['f'] or (args[4] and p.farbe({args[3], args[4], V = args['V']}) or (args[3] and (args[3] == 'P' and p.farbe({pagename}) or p.farbe({args[3], V = args['V']})) or 'B1B1B1'))
local bar = (args[1] / args[2] * 100)
local pro = string.format('%.1f', bar)
local prozent = string.gsub(pro, "%.", "%,")
return '<div align="'..(args['align'] or 'left')..'" style="margin-bottom:0.3em"><div style="max-width:150px">'..args[1]..' / '..args[2]..(args['w'] and '<span style="font-size:80%"> ('..prozent..' %)</span>' or '')..'</div><div style="width:100px;border:0.1px solid #aaa;color:inherit; background:#FFF;height:0.6em;position:relative;text-align:left;"><div style="color:inherit; background:#'..color..';width:'..bar..'%;height:0.6em;"></div></div></div>'
end
-- §11 PIPELINK (Akronym or Akronym (Begriffsklärung), Land > [[Name|Akronym]])
function p.pipelink(frame)
local args = getArgs(frame)
local key = p.name({args[1], args[2]})
if args[1] == 'Unabh.' then name = '[[Parteilos|Unabh.]]'
elseif args[1] == 'Sonst.' then name = 'Sonst.'
elseif full then name = full[2] or (args[1] == full[1] and '[['..full[1]..']]' or '[['..full[1]..'|'..cut(args[1])..']]')
else name = args[1]
end
return name
end
-- §12 FULL (Akronym, Land > [[Name]], oder [[Name (Begriffsklärung)|Name]])
function p.full(frame)
local args = getArgs(frame)
local name = p.name({args[1], args[2]})
if full then
begriff = mw.ustring.find(name,'%s%(')
label = full['label'] or begriff and mw.ustring.sub(name, 1, begriff)
end
if label then return '[['..name..'|'..label..']]'
elseif full then return '[['..name..']]'
else return name
end
end
-- §13 FARBENLISTE
function p.farbenliste(frame)
local root = mw.html.create('table'):addClass('wikitable sortable')
root:tag('tr')
:tag('th'):attr('rowspan', '2'):wikitext('Partei'):done()
:tag('th'):attr('colspan', '2'):wikitext('Farbe'):done()
:tag('th'):attr('rowspan', '2'):wikitext('Staat'):done()
:tag('th'):attr('colspan', '2'):wikitext('Alt. Farbe'):done()
root:tag('tr')
:tag('th'):addClass('unsortable'):wikitext('Ausgabe'):done()
:tag('th'):wikitext('Code'):done()
:tag('th'):addClass('unsortable'):wikitext('Ausgabe'):done()
:tag('th'):wikitext('Code'):done()
local liste = {}
for k, v in pairs(cfg.info) do
liste[#liste+1] = k
end
table.sort(liste)
for _, value in pairs(liste) do
local info = cfg.info[value]
if info[3] == nil then alt = '' else alt = 'color:inherit; background:#' .. info[3] end
root:tag('tr')
:tag('td'):wikitext('[[' .. value .. ']]'):done()
:tag('td'):css('color:inherit; background', '#' .. info[1]):done()
:tag('td'):wikitext(info[1]):done()
:tag('td'):wikitext(info[2]):done()
:tag('td'):cssText(alt):done()
:tag('td'):wikitext(info[3]):done()
end
return root
end
-- §14 LISTE DER ALTERNATIVEN NAMEN
function p.altnamenliste(frame)
local root = mw.html.create('table'):addClass('wikitable sortable')
root:tag('tr')
:tag('th'):wikitext('Alternativer name'):done()
:tag('th'):wikitext('Partei'):done()
local altn = {}
for k, v in pairs(cfg.altname) do
altn[#altn+1] = k
end
table.sort(altn)
for _, name in ipairs(altn) do
root:tag('tr')
:tag('td'):wikitext('[[' .. name .. ']]'):done()
:tag('td'):wikitext('[[' .. cfg.altname[name] ..']]'):done()
end
return root
end
-- §15 AKRONYME LISTE
function p.akronymeliste(frame)
local root = mw.html.create('table'):addClass('wikitable sortable')
root:tag('tr')
:tag('th'):wikitext('Staat;Akronym'):done()
:tag('th'):wikitext('Staat'):done()
:tag('th'):wikitext('Akronym'):done()
:tag('th'):wikitext('Parteiname'):done()
:tag('th'):wikitext('Parteien'):done()
local liste = {}
for k, v in pairs(cfx.akronym) do
liste[#liste+1] = k
end
table.sort(liste)
for _, value in pairs(liste) do
local akr = cfx.akronym[value]
root:tag('tr')
:tag('td'):wikitext(value):done()
:tag('td'):wikitext(string.sub(value, 0, (string.find(value, ';') - 1))):done()
:tag('td'):wikitext(string.sub(value, (string.find(value, ';') + 1))):done()
:tag('td'):wikitext('[['..akr[1]..']]'):done()
:tag('td'):wikitext(akr[2]):done()
end
return root
end
return p
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.