Die Dokumentation für dieses Modul kann unter Modul:Wahlkreise/Doku erstellt werden

local p = {}
local getArgs = require('Module:Arguments').getArgs
local cfg = mw.loadData('Modul:Wahlkreise/Liste');

function p.link(a, beg, x)
	local args = getArgs(frame)
	if beg then b = ' ('..beg..')' else b = '' end
	name = 'Wahlkreis '..a..b
	if x then c = ('#'..x) else c = '' end
	if name == mw.title.getCurrentTitle().prefixedText then
		code = '<span style="font-weight:bold">Wahlkreis '..a..'</span>'
	else
		code = '[['..name..c..'|Wahlkreis '..a..']]'
	end
	return code
end

function p.region(frame)
	local args = getArgs(frame)
	local code = args[1]
	local region = cfg.einheit[code]
	return region[1]
end

function p.tabelle(frame)
	local args = getArgs(frame)
	local root = mw.html.create('table'):addClass('wikitable floatright mw-collapsible mw-collapsed'):css('font-size', '89%'):css('line-height', '1.45em')
	root:tag('tr')
		:tag('th'):wikitext('Wahlkreise &ndash; ' ..(args['k'] or args['z']) ..' &ndash; [['..p.region({args[1]})..']]&nbsp;&nbsp;'):attr('colspan', 3):css('line-height', '2em'):done()
	root:tag('tr')
		:tag('th'):wikitext('Provinz'):attr('colspan', '2'):css('font-size', '90%'):css('line-height', '2em'):done()
		:tag('th'):wikitext('Gemeinden nach Provinzen &#11166; Wahlkreis'):css('font-size', '90%'):css('line-height', '2em'):done()
		
	local prov = {}
	for k, v in pairs(cfg.info) do
		prov[#prov+1] = k
	end

	table.sort(prov)
	for _, value in pairs(prov) do
		local datum = cfg.info[value]

		if args['jahr'] then provinz = args[1]..'-'..args['jahr'] else provinz = args[1] end
		if args['jahr'] then einheit = mw.ustring.find(value, args['jahr']) end
	
		if einheit then
			division = mw.ustring.sub(value, 1, (einheit - 2))
		else
			if mw.ustring.find(value, '/') then
				division = mw.ustring.sub(value, 1, ((mw.ustring.find(value, '/') - 1)))
				titel = '&#8627; <span style="font-style:italic">'..mw.ustring.sub(value, ((mw.ustring.find(value, '/') +1)))..':</span><br/>'
			else
				division = value
			end
		end
	
		if provinz == datum[1] then
			if args['z'] then
				gemeinden = datum['zg1'] or 'alle'
				gemeinden2 = datum['zg2'] or ''
				gemeinden3 = datum['zg3'] or ''
				gemeinden4 = datum['zg4'] or ''
				gemeinden5 = datum['zg5'] or ''
				gemeinden6 = datum['zg6'] or ''
				gemeinden7 = datum['zg7'] or ''
				gemeinden8 = datum['zg8'] or ''
				gemeinden9 = datum['zg9'] or ''
			else
				gemeinden = ((datum['g1'] and datum['t1']) and datum['g1']..'<small> + '..datum['t1']..'</small>') or (datum['t1'] and '<small>'..datum ['t1']..'</small>') or (datum['g1'] or 'alle')
				gemeinden2 = ((datum['g2'] and datum['t2']) and datum['g2']..'<small> + '..datum['t2']..'</small>') or datum['g2'] or (datum['t2'] and '<small>'..datum ['t2']..'</small>') or ''
				gemeinden3 = ((datum['g3'] and datum['t3']) and datum['g3']..'<small> + '..datum['t3']..'</small>') or datum['g3'] or (datum['t3'] and '<small>'..datum ['t3']..'</small>') or ''
				gemeinden4 = ((datum['g4'] and datum['t4']) and datum['g4']..'<small> + '..datum['t4']..'</small>') or datum['g4'] or (datum['t4'] and '<small>'..datum ['t4']..'</small>') or ''
				gemeinden5 = ((datum['g5'] and datum['t5']) and datum['g5']..'<small> + '..datum['t5']..'</small>') or datum['g5'] or (datum['t5'] and '<small>'..datum ['t5']..'</small>') or ''
				gemeinden6 = ((datum['g6'] and datum['t6']) and datum['g6']..'<small> + '..datum['t6']..'</small>') or datum['g6'] or (datum['t6'] and '<small>'..datum ['t6']..'</small>') or ''
				gemeinden7 = ((datum['g7'] and datum['t7']) and datum['g7']..'<small> + '..datum['t7']..'</small>') or datum['g7'] or (datum['t7'] and '<small>'..datum ['t7']..'</small>') or ''
				gemeinden8 = ((datum['g8'] and datum['t8']) and datum['g8']..'<small> + '..datum['t8']..'</small>') or datum['g8'] or (datum['t8'] and '<small>'..datum ['t8']..'</small>') or ''
				gemeinden9 = ((datum['g9'] and datum['t9']) and datum['g9']..'<small> + '..datum['t9']..'</small>') or datum['g9'] or (datum['t9'] and '<small>'..datum ['t9']..'</small>') or ''
			end

			if (args['z'] and datum['zw9']) or datum['w9'] then element9 = '<br/>'..gemeinden9..' &#11166; '..p.link((args['z'] and datum['zw9']) or datum['w9'], (args['z'] and datum['zk9']) or datum['k9'], (args['z'] and datum['zp9']) or datum['p9']) else element9 = '' end
			if (args['z'] and datum['zw8']) or datum['w8'] then element8 = '<br/>'..gemeinden8..' &#11166; '..p.link((args['z'] and datum['zw8']) or datum['w8'], (args['z'] and datum['zk8']) or datum['k8'], (args['z'] and datum['zp8']) or datum['p8']) else element8 = '' end
			if (args['z'] and datum['zw7']) or datum['w7'] then element7 = '<br/>'..gemeinden7..' &#11166; '..p.link((args['z'] and datum['zw7']) or datum['w7'], (args['z'] and datum['zk7']) or datum['k7'], (args['z'] and datum['zp7']) or datum['p7']) else element7 = '' end
			if (args['z'] and datum['zw6']) or datum['w6'] then element6 = '<br/>'..gemeinden6..' &#11166; '..p.link((args['z'] and datum['zw6']) or datum['w6'], (args['z'] and datum['zk6']) or datum['k6'], (args['z'] and datum['zp6']) or datum['p6']) else element6 = '' end
			if (args['z'] and datum['zw5']) or datum['w5'] then element5 = '<br/>'..gemeinden5..' &#11166; '..p.link((args['z'] and datum['zw5']) or datum['w5'], (args['z'] and datum['zk5']) or datum['k5'], (args['z'] and datum['zp5']) or datum['p5']) else element5 = '' end
			if (args['z'] and datum['zw4']) or datum['w4'] then element4 = '<br/>'..gemeinden4..' &#11166; '..p.link((args['z'] and datum['zw4']) or datum['w4'], (args['z'] and datum['zk4']) or datum['k4'], (args['z'] and datum['zp4']) or datum['p4']) else element4 = '' end		
			if (args['z'] and datum['zw3']) or datum['w3'] then element3 = '<br/>'..gemeinden3..' &#11166; '..p.link((args['z'] and datum['zw3']) or datum['w3'], (args['z'] and datum['zk3']) or datum['k3'], (args['z'] and datum['zp3']) or datum['p3']) else element3 = '' end
			if (args['z'] and datum['zw2']) or datum['w2'] then element2 = '<br/>'..gemeinden2..' &#11166; '..p.link((args['z'] and datum['zw2']) or datum['w2'], (args['z'] and datum['zk2']) or datum['k2'], (args['z'] and datum['zp2']) or datum['p2']) else element2 = '' end
		
			if (args['z'] and datum['zw2']) or datum['w2'] then element = ''..gemeinden..' &#11166; ' ..p.link((args['z'] and datum['zw1']) or datum['w1'], (args['z'] and datum['zk1']) or datum['k1'], (args['z'] and datum['zp1']) or datum['p1'])..element2..element3..element4..element5..element6..element7..element8..element9
				else element = gemeinden..' &#11166; '..p.link((args['z'] and datum['zw1']) or datum['w1'], (args['z'] and datum['zk1']) or datum['k1'], (args['z'] and datum['zp1']) or datum['p1'])
			end


	if mw.ustring.find(value, '-') then
		if datum['map'] then
			unity = value
		else
			unity = division
		end
		else unity = value
	end
	
	local kart = cfg.info[unity] 
	karte = kart['map']
		
			if not datum['anzahl'] and not mw.ustring.find(value, '/') then
				root:tag('tr')
			end
			if mw.ustring.find(value, '/') then
				if datum['anzahl'] then
					root
						:tag('td'):wikitext('[[Datei:'..karte..'|50x50px]]'):attr('rowspan', datum['anzahl']):done()
						:tag('td'):wikitext('[['..division..']]<br/><small>('..datum['i']..' Gemeinden)</small>'):attr('rowspan', datum['anzahl']):done()
						:tag('td'):wikitext(titel..element):done()
				else
					root:tag('tr')
						:tag('td'):wikitext(titel..element):done()
				end
			else
				root
					:tag('td'):wikitext('[[Datei:'..karte..'|50x50px]]'):done()
					:tag('td'):wikitext('[['..division..']]<br/><small>('..datum['i']..' Gemeinden)</small>'):done()
					:tag('td'):wikitext(element):done()
			end
		end
	end
	return root
end

return p