Modul:Partei

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">&#xfeff;</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.

  1. 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:
  2. 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.
  3. 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.
  4. 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.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.