Modul:Kommunfakta Belgien WD

Från Wikipedia

Dokumentation [visa] [redigera] [historik] [rensa sidcachen]


local wikidata = require('Modul:Wikidata2').formatStatementsFromLua
local Ortsfaktarat = require('Modul:Ortsfakta').rat
local namnversalisering = require('Modul:Textformatering').namnversalisering
local established = require('Modul:Ortsfakta/Aux').established

p = {}

function test(item, claim)
	local f = false
	for k, v in pairs(claim) do
		if v.item == item then 
			return true
		end
	end
	return false
end

function test2(item, claim)
	local f = false
	for k, v in pairs(claim) do
		if v == item then 
			return true
		end
	end
	return false
end

function p.ort( entity, args )
	local ill_kat = ''
	local a = {}
	table.insert(a, "{{Geobox\n| Region")
	
	local namn = args['namn'] 
	if not namn or namn == '' then
		if entity.labels and entity.labels.sv then
			namn = entity.labels.sv.value
		else
			namn = mw.title.getCurrentTitle().text
		end
	end

	local titel = 'Borgmästare'
	local huvud = 'Centralort'
	local lokalt = ''
	local nl = ''
	local fr = ''
	local de = ''
	if entity.labels then
		if entity.labels.nl then
			nl = mw.getCurrentFrame():preprocess('{{Lang|nl|' .. entity.labels.nl.value .. '}}')
		end
		if entity.labels.fr then
			fr = mw.getCurrentFrame():preprocess('{{Lang|fr|' .. entity.labels.fr.value .. '}}')
		end
		if entity.labels.de then
			de = mw.getCurrentFrame():preprocess('{{Lang|de|' .. entity.labels.de.value .. '}}')
		end
	end
	
	local fd = false
	table.insert(a, "\n| name = " .. namn)
	
	local v = wikidata({entity = entity, property = 'P31', avoidqualifier='P582', raw = 'true', noref = 'true'})
	if test('Q15273785', v) then
		table.insert(a, "\n| category = [[Belgiens kommuner|Stadskommun]]")
		titel = '[[Borgmästare]]'
		huvud = '[[Centralort]]'
	elseif test('Q493522', v) then
		table.insert(a, "\n| category = [[Belgiens kommuner|Kommun]]")
		titel = '[[Borgmästare]]'
		huvud = '[[Centralort]]'
	elseif test('Q91028', v) then
		table.insert(a, "\n| category = [[Arrondissement#Belgiska arrondissement|Arrondissement]]")
	elseif test('Q83116', v) then
		table.insert(a, "\n| category = [[Belgiens administrativa indelning#Provinser|Provins]]")
		titel = 'Guvernör'
		huvud = '[[Residensstad]]'
	elseif test('Q83057', v) then
		table.insert(a, "\n| category = [[Belgiens administrativa indelning|Federal region]]")
		titel = '[[Ministerpresident]]'
		huvud = '[[Huvudstad]]'
	else
		v = wikidata({entity = entity, property = 'P31', raw = 'true', noref = 'true'})
		if test('Q15273785', v) then
			table.insert(a, "\n| category = Tidigare [[Belgiens kommuner|stadskommun]]")
			titel = '[[Borgmästare]]'
			huvud = '[[Centralort]]'
		elseif test('Q493522', v) then
			table.insert(a, "\n| category = Tidigare [[Belgiens kommuner|kommun]]")
			titel = '[[Borgmästare]]'
			huvud = '[[Centralort]]'
			fd = true
		else
			table.insert(a, "\n| category_hide = true")
		end
	end
	
			
	local bild = args.bild
	local bildtext = args.bildtext
	if not bild then
		local data = wikidata({entity = entity, property = 'P18', raw = 'true', noref='true', enbarten = 'true', langpref = 'sv'})
		if data and #data > 0 then
			bild = data[1].value
			bildtext = data[1].bildtext or data[1].motiv
		end
	end
	if bild and bild ~= '' then
		table.insert(a, "\n| image         = " .. (bild or ''))
		if bildtext then
			table.insert(a, "\n| image_caption = " .. (bildtext or ''))
		end
		if args['bildstorlek'] then
			table.insert(a, "\n| image_size    = " .. args['bildstorlek'])
		end
	end

	local flagga = args.flagga
	if flagga and flagga ~= '' then
		table.insert(a, "\n| flag = " .. flagga)
		table.insert(a, "\n| flag_type = Flagga" )
	elseif not flagga then
		local data = wikidata({entity = entity, property = 'P41', raw = 'true', noref='true', enbarten = 'true'})
		if data and #data > 0 then
			table.insert(a, "\n| flag = " .. data[1].value)
			local data2 = wikidata({entity = entity, property = 'P163', raw = 'true', noref='true', enbarten = 'true'})
			if data2 and #data2 > 0 then
				table.insert(a, "\n| flag_type = " .. data2[1].value)
			else
				table.insert(a, "\n| flag_type = Flagga" )
			end
		end
	end
	
	local vapen = args.vapen or args.vapenbild
	if vapen and vapen ~= '' then
		table.insert(a, "\n| symbol      = " .. vapen )
		table.insert(a, "\n| symbol_type = [[Heraldiskt vapen|Vapen]]")
	elseif not vapen then
		local data = wikidata({entity = entity, property = 'P94', raw = 'true', noref='true', enbarten = 'true'})
		local data2 = wikidata({entity = entity, property = 'P237', raw = 'true', noref='true', enbarten = 'true'})
		if data and #data > 0 then
			table.insert(a, "\n| symbol = " .. data[1].value)
			if data2 and #data2 > 0 then
				table.insert(a, "\n| symbol_type = " .. data2[1].value)
			else
				table.insert(a, "\n| symbol_type = [[Heraldiskt vapen|Vapen]]")
			end
		end
	end

	table.insert(a, "\n| country       = Belgien")
	table.insert(a, "\n| country_flag  = 1")
	local level2 = nil

	if args.region and args.region ~= '' then
		table.insert(a, "\n| state       = " .. args.region)
		table.insert(a, "\n| state_type  = [[Belgiens administrativa indelning|Federal region]]")
		if args.provins and args.provins ~= '' then
			table.insert(a, "\n| region       = " .. args.provins)
			table.insert(a, "\n| region_type  = [[Belgiens administrativa indelning#Provinser|Provins]]")
			if args.arrondissement and args.arrondissement ~= '' then
				table.insert(a, "\n| district       = " .. args.arrondissement)
				table.insert(a, "\n| district_type  = [[Arrondissement#Belgiska arrondissement|Arrondissement]]")
			end
		end
	else
		local v = USAharva(entity, {})
		if v and #v > 0 then
			table.insert(a, "\n| state       = " .. v[#v].value )
			table.insert(a, "\n| state_type  = " .. v[#v].typ   )
			if #v > 1 then
				table.insert(a, "\n| region       = " .. v[#v-1].value)
				table.insert(a, "\n| region_type  = " .. v[#v-1].typ  )
				level2 = v[#v-1].item
				if #v > 2 then
					table.insert(a, "\n| district       = " .. v[#v-2].value)
					table.insert(a, "\n| district_type  = " .. v[#v-2].typ  )
				end
			end
			if v[#v].item == 'Q240' or entity.id == 'Q240' then -- Bryssel
				lokalt = fr .. '<br/>' .. nl
			elseif v[#v].item == 'Q231' or entity.id == 'Q231' then -- Vallonien
				lokalt = fr
			elseif v[#v].item == 'Q234' or v[#v].item == 'Q9337' or entity.id == 'Q234' or entity.id == 'Q9337' then -- Flandern
				lokalt = nl
			end
		end
	end

	if args['lokaltnamn'] or args['lokalt_namn'] then
		table.insert(a, "\n| other_name = " .. (args['lokaltnamn'] or args['lokalt_namn']) )
	else
		if test2(entity.id, {'Q159868','Q159981','Q152737','Q160005','Q151831','Q159864','Q159958','Q152734','Q152748'}) then -- tyska gemenskapen
			table.insert(a, "\n| other_name = " .. de) 
		else
			table.insert(a, "\n| other_name = " .. lokalt) 
		end
	end


	if args.slogan then
		table.insert(a, "\n| motto      = " .. args.slogan )
		table.insert(a, "\n| motto_type = [[Slogan]]" )
	else
		local data = wikidata({entity = entity, property = 'P6251', noref = 'noimport'})
		if data and data ~= '' then
			table.insert(a, "\n| motto      = " .. data )
			table.insert(a, "\n| motto_type = [[Slogan]]" )
		end
	end
	
	if args.koordinat then
		table.insert(a, "\n| location = " .. args.koordinat)
	end
	
	local elevation = args['höjdläge'] 
	if elevation then
		table.insert(a, "\n| elevation = " .. elevation)
	else
		local v = wikidata({entity=entity, property='P2044', enbarten = 'true', raw = 'true', convertunit='Q11573', noref='noimport'})
		if v and #v > 0 then
			v = v[1]
			if tonumber(v.amount) then
				table.insert(a, "\n| elevation = " .. math.abs( tonumber(v.amount)) )
				if tonumber(v.amount) < 0 then
					table.insert(a, "\n| elevation_unit = muh" )
				else
					table.insert(a, "\n| elevation_unit = möh" )
				end
				if v.ref and v.ref ~= '' then
					table.insert(a, "\n| elevation_note = " .. v.ref)
				end
			end
		end
	end

	local highest = args['högsta punkt namn'] 
	if highest then
		table.insert(a, "\n| highest = " .. highest )
		local highest_elevation = args['högsta punkt meter'] 
		if highest_elevation then
			table.insert(a, "\n| highest_elevation = " .. highest_elevation )
		end
	else
		local v = wikidata({entity=entity, property='P610', enbarten = 'true', raw = 'true'})
		if v and #v > 0 then
			table.insert(a, "\n| highest = " .. v[1].value .. v[1].ref)
			local v2 = wikidata({entityId=v[1].item, property='P2044', enbarten = 'true', raw = 'true', convertunit='Q11573', noref='noimport'})
			if v2 and #v2 > 0 then
				if tonumber(v2[1].amount) then
					table.insert(a, "\n| highest_elevation = " .. math.abs( tonumber(v2[1].amount)) )
					if tonumber(v2[1].amount) < 0 then
						table.insert(a, "\n| highest_elevation_unit = muh" )
					else
						table.insert(a, "\n| highest_elevation_unit = möh" )
					end
					table.insert(a, "\n| highest_elevation_note = " .. v2[1].ref)
				end
			end
			v2 = wikidata({entityId=v[1].item, property='P625', enbarten = 'true', raw = 'true', noref = 'true', nogeodataparser = 'true'})
			if v2 and #v2 > 0 then
				v2 = Ortsfaktarat(v2[1], 'sekund')
				table.insert(a, "\n| highest_lat_d   = " .. (v2.lat_g or ''))
				table.insert(a, "\n| highest_lat_m   = " .. (v2.lat_m or ''))
				table.insert(a, "\n| highest_lat_s   = " .. (v2.lat_s or ''))
				table.insert(a, "\n| highest_lat_NS  = " .. (v2.lat_NS or ''))
				table.insert(a, "\n| highest_long_d  = " .. (v2.long_g or ''))
				table.insert(a, "\n| highest_long_m  = " .. (v2.long_m or ''))
				table.insert(a, "\n| highest_long_s  = " .. (v2.long_s or ''))
				table.insert(a, "\n| highest_long_EW = " .. (v2.long_EW or ''))
			end
		end
	end

	local lowest = args['lägsta punkt namn'] 
	if lowest then
		table.insert(a, "\n| lowest = " .. lowest )
		local lowest_elevation = args['lägsta punkt meter'] 
		if lowest_elevation then
			table.insert(a, "\n| lowest_elevation = " .. lowest_elevation )
		end
	else
		local v = wikidata({entity=entity, property='P1589', enbarten = 'true', raw = 'true'})
		if v and #v > 0 then
			table.insert(a, "\n| lowest = " .. v[1].value .. v[1].ref)
			local v2 = wikidata({entityId=v[1].item, property='P2044', enbarten = 'true', raw = 'true', convertunit='Q11573', noref='noimport'})
			if v2 and #v2 > 0 then
				if tonumber(v2[1].amount) then
					table.insert(a, "\n| lowest_elevation = " .. math.abs( tonumber(v2[1].amount)) )
					if tonumber(v2[1].amount) < 0 then
						table.insert(a, "\n| lowest_elevation_unit = muh" )
					else
						table.insert(a, "\n| lowest_elevation_unit = möh" )
					end
					table.insert(a, "\n| lowest_elevation_note = " .. v2[1].ref)
				end
			end
			v2 = wikidata({entityId=v[1].item, property='P625', enbarten = 'true', raw = 'true', noref = 'true', nogeodataparser = 'true'})
			if v2 and #v2 > 0 then
				v2 = Ortsfaktarat(v2[1], 'sekund')
				table.insert(a, "\n| lowest_lat_d   = " .. (v2.lat_g or ''))
				table.insert(a, "\n| lowest_lat_m   = " .. (v2.lat_m or ''))
				table.insert(a, "\n| lowest_lat_s   = " .. (v2.lat_s or ''))
				table.insert(a, "\n| lowest_lat_NS  = " .. (v2.lat_NS or ''))
				table.insert(a, "\n| lowest_long_d  = " .. (v2.long_g or ''))
				table.insert(a, "\n| lowest_long_m  = " .. (v2.long_m or ''))
				table.insert(a, "\n| lowest_long_s  = " .. (v2.long_s or ''))
				table.insert(a, "\n| lowest_long_EW = " .. (v2.long_EW or ''))
			end
		end
	
	end

	local nordligt = nil
	if args.lat_dec or args.lat_g then
		nordligt = tonumber(args.lat_dec or args.lat_g)
		table.insert(a, "\n| lat_d   = " .. (args.lat_dec or args.lat_g))
		table.insert(a, "\n| lat_m   = " .. (args.lat_m or ''))
		table.insert(a, "\n| lat_s   = " .. (args.lat_s or ''))
		table.insert(a, "\n| lat_NS  = " .. (args.lat_NS or ''))
		table.insert(a, "\n| long_d  = " .. (args.long_dec or args.long_g or ''))
		table.insert(a, "\n| long_m  = " .. (args.long_m or ''))
		table.insert(a, "\n| long_s  = " .. (args.long_s or ''))
		table.insert(a, "\n| long_EW = " .. (args.long_EW or ''))
	elseif not args.koordinat then
		local v = wikidata({entity = entity, property = 'P625', raw = 'true', noref='true', enbarten = 'true', nogeodataparser = 'true'})
		if v and #v > 0 then
			v = Ortsfaktarat(v[1], 'sekund')
			if v then
				nordligt = tonumber(v.lat_g)
				table.insert(a, "\n| lat_d   = " .. (v.lat_g or ''))
				table.insert(a, "\n| lat_m   = " .. (v.lat_m or ''))
				table.insert(a, "\n| lat_s   = " .. (v.lat_s or ''))
				table.insert(a, "\n| lat_NS  = " .. (v.lat_NS or ''))
				table.insert(a, "\n| long_d  = " .. (v.long_g or ''))
				table.insert(a, "\n| long_m  = " .. (v.long_m or ''))
				table.insert(a, "\n| long_s  = " .. (v.long_s or ''))
				table.insert(a, "\n| long_EW = " .. (v.long_EW or ''))
			end
		end
	end
	
	a = established(entity, a, args) -- hämtar uppgifter om bildande, gränsjusteringar och upplösning mm

	table.insert(a, '\n| timezone     = [[Centraleuropeisk tid|CET]] | utc_offset = +1 ')
	table.insert(a, '\n| timezone_DST = [[Centraleuropeisk tid|CEST]]| utc_offset_DST = +2')
	
	
	if args.postnummer then
		table.insert(a, '\n| postal_code = ' .. args.postnummer)
		table.insert(a, '\n| postal_code_type = [[Postnummer#Belgien|Postnummer]]')
	else
		local v = wikidata({entity = entity, property = 'P281'})
		if v and v ~= '' then
			table.insert(a, '\n| postal_code = ' .. v)
			table.insert(a, '\n| postal_code_type = [[Postnummer#Belgien|Postnummer]]')
		end	
	end	
	
	if args.riktnummer then
		table.insert(a, '\n| area_code = ' .. args.riktnummer)
		table.insert(a, '\n| area_code_type = [[Riktnummer]]')
	else
		local v = wikidata({entity = entity, property = 'P473', noref='noimport'})
		if v and v ~= '' then
			table.insert(a, '\n| area_code = ' .. v)
			table.insert(a, '\n| area_code_type = [[Riktnummer]]')
		end	
	end	
	
	if args.kommunkod and args.kommunkod ~= '' then
		table.insert(a, '\n| code = ' .. args.kommunkod)
		table.insert(a, '\n| code_type = [[Kommunkod]]')
	else
		local data = wikidata({entity = entity, property = 'P1567', noref='noref', withintervall = 'yes', modifyqualifiertime = 'Y', conjunction = '<br/>', separator = '<br/>', rank = 'valid'})
		if data and #data > 0 then
			table.insert(a, '\n| code = ' .. data)
			table.insert(a, '\n| code_type = [[Kommunkod]]')
		end
	end
	if args.nuts and args.nuts ~= '' then
		table.insert(a, '\n| code1 = ' .. args.nuts)
		table.insert(a, '\n| code1_type = [[Nomenklatur för statistiska territoriella enheter|NUTS]]')
	else
		local data = wikidata({entity = entity, property = 'P605', noref='noref', withintervall = 'yes', modifyqualifiertime = 'Y', conjunction = '<br/>', separator = '<br/>', rank = 'valid'})
		if data and #data > 0 then
			table.insert(a, '\n| code1 = ' .. data)
			table.insert(a, '\n| code1_type = [[Nomenklatur för statistiska territoriella enheter|NUTS]]')
		end
	end
	if args.iso31662 and args.iso31662 ~= '' then
		table.insert(a, '\n| code2 = ' .. args.iso31662)
		table.insert(a, '\n| code2_type = [[ISO 3166-2]]')
	else
		local data = wikidata({entity = entity, property = 'P300', noref='noref', withintervall = 'yes', modifyqualifiertime = 'Y', conjunction = '<br/>', separator = '<br/>', rank = 'valid'})
		if data and #data > 0 then
			table.insert(a, '\n| code2 = ' .. data)
			table.insert(a, '\n| code2_type = [[ISO 3166-2]]')
		end
	end
	


	local ledare = false
	
	local borg = args['borgmästare'] or args['ministerpresident'] or args['guvernör']
	if borg and borg ~= '' then
		ledare = true
		table.insert(a, '\n| leader1 = ' .. borg)
		table.insert(a, '\n| leader1_type = ' .. titel)
	elseif not borg then
		local data = wikidata({entity = entity, property = 'P6', withintervall = 'yes', modifyqualifiertime = 'Y', noref = 'noimport', raw = 'true', cat = 'true'})
		if data and #data > 0 then
			ledare = true
			if data[1].tifr then
				table.insert(a, '\n| leader1 = ' .. data[1].value .. '<small> (' .. data[1].tifr .. ')</small>')
			else
				table.insert(a, '\n| leader1 = ' .. data[1].value )
			end
			if data[1].parti and data[1].parti ~= '' then
				table.insert(a, '\n| leader1_party = ' .. data[1].parti)
			end
			table.insert(a, '\n| leader1_type = ' .. titel )
			if data[1].ref then
				table.insert(a, '\n| leader1_note = ' .. data[1].ref)
			end
		end
	end
	if ledare then
		table.insert(a, '\n| leader = &nbsp;')
		table.insert(a, '\n| leader_type = Politik')
	end

	local y1 = false
	local y2 = false

	local area = args.yta
	if area and area ~= '' then
		table.insert(a, "\n| area = " .. area)
		if args['yta_datum'] then
			table.insert(a, "\n| area_date = " .. args['yta_datum'])
		end
		if args['yta_ref'] then
			table.insert(a, "\n| area_note = " .. args['yta_ref'])
		end
		if args['yta_land'] then
			table.insert(a, "\n| area_land = " .. args['yta_land'])
			y1 = true
			if args['yta_land_datum'] then
				table.insert(a, "\n| area_land_date = " .. args['yta_land_datum'])
			end
			if args['yta_land_ref'] then
				table.insert(a, "\n| area_land_note = " .. args['yta_land_ref'])
			end
		end		
		if args['yta_vatten'] then
			table.insert(a, "\n| area_water = " .. args['yta_vatten'])
			if args['yta_vatten_datum'] then
				table.insert(a, "\n| area_water_date = " .. args['yta_vatten_datum'])
			end
			if args['yta_land_ref'] then
				table.insert(a, "\n| area_water_note = " .. args['yta_vatten_ref'])
			end
		end		
	elseif not area then
		-- area total
		local v = wikidata({entity = entity, property = "P2046", sortbytime = 'chronological', enbarten = 'yes', raw = 'true', preferqualifier ='P518', rank = 'valid', preferqualifiervalue = 'Q16868672', modifyqualifiertime = 'Y', convertunit = 'Q712226', noref='noimport'})		
		if not v or #v == 0 then 
			-- area total, utan qualifier om ovan inte funkade
			v = wikidata({entity = entity, property = "P2046", sortbytime = 'chronological', enbarten = 'yes', raw = 'true', avoidqualifier='P518', rank = 'valid', modifyqualifiertime = 'Y', convertunit = 'Q712226', noref='noimport'})
		end
		if v and #v > 0 then
			y1 = true
			table.insert(a, "\n| area = " .. tonumber(plus(v[1].amount)))
			table.insert(a, "\n| area_decimals = 2")
			if v[1].datum and v[1].datum ~= '' then
				table.insert(a, "\n| area_date = " .. v[1].datum)
			end
			if v[1].ref then
				table.insert(a, "\n| area_note = " .. v[1].ref)
			end
		end
		local v2 = wikidata({entity = entity, property = "P2046", sortbytime = 'chronological', enbarten = 'yes', raw = 'true', preferqualifier ='P518', rank = 'valid', preferqualifiervalue = 'Q205895', modifyqualifiertime = 'Y', convertunit = 'Q712226', noref='true'})
		local v4 = wikidata({entity = entity, property = "P2046", sortbytime = 'chronological', enbarten = 'yes', raw = 'true', preferqualifier ='P518', rank = 'valid', preferqualifiervalue = 'Q23397', convertunit = 'Q712226', noref='true', modifyqualifiertime = 'Y'}) -- insjövatten
		local v5 = wikidata({entity = entity, property = "P2046", sortbytime = 'chronological', enbarten = 'yes', raw = 'true', preferqualifier ='P518', rank = 'valid', preferqualifiervalue = 'Q4022', convertunit = 'Q712226', noref='true', modifyqualifiertime = 'Y'}) -- floder
		if v2 and #v2 > 0 then
			local land = tonumber(plus(v2[1].amount))
			if v4 and #v4 > 0 then
				land = land - tonumber(plus(v4[1].amount))
			end
			if v5 and #v5 > 0 then
				land = land - tonumber(plus(v5[1].amount))
			end
			table.insert(a, "\n| area_land = " .. land )
			y1 = true
			table.insert(a, "\n| area_land_decimals = 2")
			if v2[1].datum and v2[1].datum ~= '' then
				table.insert(a, "\n| area_land_date = " .. v2[1].datum)
			end
		end
		local vatten = 0
		local v3 = wikidata({entity = entity, property = "P2046", sortbytime = 'chronological', enbarten = 'yes', raw = 'true', preferqualifier ='P518', rank = 'valid', preferqualifiervalue = 'Q213204', convertunit = 'Q712226', noref='true', modifyqualifiertime = 'Y'})
		if v3 and #v3 > 0 then
			vatten = vatten + tonumber(plus(v3[1].amount))
		end
		if v4 and #v4 > 0 then
			vatten = vatten + tonumber(plus(v4[1].amount))
		end
		if v5 and #v5 > 0 then
			vatten = vatten + tonumber(plus(v5[1].amount))
		end
		if vatten > 0 then
			table.insert(a, "\n| area_water = " .. vatten)
			table.insert(a, "\n| area_water_decimals = 2")
			if v3[1] and v3[1].datum and v4[1] and v4[1].datum and v5[1] and v5[1].datum and v3[1].datum == v4[1].datum and v3[1].datum == v5[1].datum then
				table.insert(a, "\n| area_water_date = " .. v3[1].datum)
			end
		end
	end
		
	local inv = args['folkmängd']
	if inv and inv ~= '' then
		table.insert(a, "\n| population = " .. inv)
		y2 = true
		if args.invdatum then
			table.insert(a, "\n| population_date = " .. args['folkmängd_datum'] )
		end
		if args.invref then
			table.insert(a, "\n| population_note = " .. args['folkmängd_ref'] )
		end
	elseif not inv then
		local v = wikidata({entity = entity, property='P1082', sortbytime = 'chronological', enbarten = 'yes', raw = 'true', avoidqualifier='P518', noref='noimport', modifyqualifiertime = 'Y'})
		if v and v[1] and v[1].amount then
			table.insert(a, "\n| population = " .. tonumber(plus(v[1].amount)))
			y2 = true
			if v[1].datum then
				table.insert(a, "\n| population_date = " .. v[1].datum)
			end
			if v[1].ref then
				table.insert(a, "\n| population_note = " .. v[1].ref)
			end
		end
	end
	
	if y1 and y2 then
		table.insert(a, "\n| population_density = auto")
	end

	local central = args.residensstad or args.centralort or args.huvudstad
	if central and central ~= '' then
		table.insert(a, "\n| capital = " .. central)
		table.insert(a, "\n| capital_type = " .. huvud)
	elseif not residensstad then
		local v = wikidata({entity = entity, property='P36', noref='true'})
		if v and v ~= '' then
			table.insert(a, "\n| capital = " .. v)
			table.insert(a, "\n| capital_type = " .. huvud)
		end
	end

	if args.geonames then
		table.insert(a, '\n| geonames = ' .. args.geonames)
	end

	if args.karta and args.karta ~= '' then
		if args['positionskarta'] then
			table.insert(a, '\n| map_locator     = ' .. args['positionskarta'])
		end
		table.insert(a, '\n| map           = ' .. (args.karta or ''))
		table.insert(a, '\n| map_caption   = ' .. (args.karttext or 'Översiktskarta'))
	elseif not args.karta then
		data = wikidata({entity = entity, property = 'P1943', raw = 'true', noref='true', enbarten = 'true'})
		if not data or #data == 0 then
			data = wikidata({entity = entity, property = 'P242', raw = 'true', noref='true', enbarten = 'true'})
		end
		if data and #data > 0 then 
			table.insert(a, '\n| map   = ' .. data[1].value)
			if data[1].bildtext then
				table.insert(a, '\n| map_caption   = ' .. data[1].bildtext)
			else
				table.insert(a, '\n| map_caption   = Översiktskarta')
			end
		else
			table.insert(a, '\n| map_locator = Belgien')
			table.insert(a, '\n| map         = Belgium location map.svg')
			table.insert(a, '\n| map_caption = Läge i Belgien')
		end
	end	
	if args.karta2 then
		if args.positionskarta2 then
			table.insert(a, '\n| map2_locator = ' .. args.positionskarta2 )
		end
		table.insert(a, '\n| map2         = ' .. args.karta2)
		table.insert(a, '\n| map2_caption = ' .. args.karta2text)
		if args.karta2storlek then
			table.insert(a, '\n| map2_size     = ' .. args.karta2storlek)
		end
	elseif level2 then
		local data = wikidata({entityId = level2, property = 'P242', raw = 'true', noref='true', enbarten = 'true'})
		if data and #data > 0 then
			table.insert(a, '\n| map2   = ' .. data[1].value)
			if level2 == 'Q90870' then
				table.insert(a, '\n| map2_caption   = Brussel-Hoofdstads läge i Belgien')
			else
				table.insert(a, '\n| map2_caption   = Provinsens läge i Belgien')
			end
		end
	end
	

	local kmlfaktaruta = require('Modul:KML faktaruta').main
	local k = kmlfaktaruta(entity)
	if k then
		table.insert(a, '\n| KML                   = ' .. k)
	end
	
	if args.fotnot and args.fotnot ~= '' then
		table.insert(a, '\n| footnotes         = ' .. args.fotnot ..  '<br />[[d:'.. entity.id .. '|Redigera Wikidata]]')
	else
		table.insert(a, '\n| footnotes         = [[d:'.. entity.id .. '|Redigera Wikidata]]')
	end

	if args.commons then
		table.insert(a, '\n| commons               = ' .. args.commons)
	else
		table.insert(a, '\n| commons               = ' .. Comcat(entity))
	end
	
	if args.hemsida and args.hemsida ~= '' then
		table.insert(a, '\n| website = ' .. args.hemsida)
	elseif not args.hemsida and not fd then
		local v = wikidata({entity = entity, property = "P856", enbarten = 'yes', noref='true'})
		if v and v ~= '' then
			table.insert(a, '\n| website = ' .. v)
		end
	end
	table.insert(a, '\n}}')
	return mw.getCurrentFrame():preprocess(table.concat(a))
end		

function USAharva(entity, s)
	local v = wikidata({entity = entity, property = 'P131', noref = 'true', raw = 'true', avoidqualifier='P582'})
	if not v or #v == 0 or v[1].item == 'Q31' then 
		return s
	elseif #v > 1 then -- bypass en nivå om den innhåller mer än en p131
		local entity2 = mw.wikibase.getEntityObject( v[1].item )
		return USAharva( entity2, s)
	else
		local entity2 = mw.wikibase.getEntityObject( v[1].item )
		local flag = wikidata({entity = entity2, property = 'P41', noref = 'true', enbarten = 'true'})
		local p31 = wikidata({entity = entity2, property = 'P31', noref = 'true'})
		local p32 = wikidata({entity = entity2, property = 'P31', noref = 'true', raw = true})
		if test("Q91028", p32) then
			p31 = '[[Arrondissement#Belgiska arrondissement|Arrondissement]]'
		elseif test("Q83116", p32) then
			p31 = '[[Belgiens administrativa indelning#Provinser|Provins]]'
		elseif test('Q83057', p32) then
			p31 = '[[Belgiens administrativa indelning|Federal region]]'
		else
			p31 = p31 .. '[[Kategori:Underhållskategori för Ortsfakta WD|B]]'
		end
		table.insert(s, {item = v[1].item, flag = flag, typ = p31, value = v[1].value}) -- 
		return USAharva( entity2, s)
	end
end


function Comcat(entity)
	if not entity or not entity.claims or not entity.claims.P373 then
		return ''
	else
		if entity.claims.P373[1].mainsnak.snaktype ~= 'value' then
			return ''
		else
			return entity.claims.P373[1].mainsnak.datavalue.value
		end
	end
end

function plus(a)
	if string.sub(a, 1, 1) == '+' then
		return string.sub(a, 2)
	end
	return a
end

return p