Modul:Ortsfakta WD

Från Wikipedia

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


Tanken med den här modulen är att den ska sortera vilka moduler som ska användas i olika sammanhang. Själva ihopbyggandet av Geoboxen görs i undermoduler som Modul:Ortsfakta Sverige WD och Modul:Ortsfakta Sverige WD Grupp. För närvarande (juli 2023) finns 12 undermoduler för:

  • Afghanistan (distrikt)
  • Belgien (kommuner)
  • Danmark (kommuner, regioner)
  • Färöarna (kommuner)
  • Grönland (kommuner)
  • Norge (orter, kommuner, fylken)
  • Sverige (orter, ortsgrupper)
  • USA (orter)
local wikidata = require('Modul:Wikidata2').formatStatementsFromLua

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 p.ort( frame )
	if mw.title.getCurrentTitle().text == 'Ortsfakta WD' then
		return nil
	end
	local args = frame:getParent().args
	for i, j in pairs(frame.args) do
		if not args[i] then
			args[i] = j
		end
	end
	local qid = args.qid
	local entity = {}
	if qid == '' then 
		entity = mw.wikibase.getEntityObject()
	else
		entity = mw.wikibase.getEntityObject( qid )
	end
	if not entity then
		entity = mw.wikibase.getEntityObject( 'Q13406268' ) -- Sandlåda
	end
	local land = wikidata({entity = entity, property = 'P17', raw = 'true', noref = 'true'})
	if land and #land > 0 then
		if test('Q889', land) then -- Afghanistan
			local typ = wikidata({entity = entity, property = 'P31', avoidqualifier='P582', raw = 'true', noref = 'true'})
			if typ and #typ > 0 then
				if test('Q496825', typ) or test('Q158683', typ) then -- Provins, Distrikt
					local ortsfaktaAFG = require('Modul:Distriktfakta Afghanistan WD').ort
					return ortsfaktaAFG(entity, args)
				else
					return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Typ (P31) stöds inte i [[d:' .. entity.id .. '#P31|' .. entity.id .. ']]. (Afghanistan)</span>'
				end
			else
				return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Typ (P31) saknas i [[d:' .. entity.id .. '#P31|' .. entity.id .. ']]. (Afghanistan)</span>'
			end
		elseif test('Q34',land) then -- Sverige
			local typ = wikidata({entity = entity, property = 'P31', avoidqualifier='P582', raw = 'true', noref = 'true'})
			if typ and #typ > 0 then
				if test('Q25964111', typ) then
					local OrtsfaktaSverige = require('Modul:Ortsfakta Sverige WD Grupp').ort
					return OrtsfaktaSverige(entity, args)
				end
			end
			local OrtsfaktaSverige = require('Modul:Ortsfakta Sverige WD').ort
			return OrtsfaktaSverige(entity, args)
		elseif test('Q20',land) then -- Norge
			local typ = wikidata({entity = entity, property = 'P31', raw = 'true', noref = 'true'})
			if typ and #typ > 0 then
				if test('Q755707', typ) or test('Q18663579', typ) then -- Norges kommuner eller Norges tidigare kommuner
					local KommunfaktaNorge = require('Modul:Kommunfakta Norge WD').ort
					return KommunfaktaNorge(entity, args)
				elseif test('Q192299', typ) or  test('Q83640434', typ) then -- Fylke eller tidigare fylke
					local FylkesfaktaNorge = require('Modul:Fylkesfakta Norge WD').ort
					return FylkesfaktaNorge(entity, args)
				elseif test('Q15092344', typ) or test('Q486972', typ) or test('Q515', typ) then -- tätort/samhälle/stad
					local FylkesfaktaNorge = require('Modul:Ortsfakta Norge WD').ort
					return FylkesfaktaNorge(entity, args)
				end	
			else
				return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Giltig typ (P31) saknas i [[d:' .. entity.id .. '#P31|' .. entity.id .. ']]. (Norge)</span>'
			end
		elseif test('Q35', land) or test('Q4628', land) or test('Q223', land) or test('Q756617', land) then -- Danmark, Färöarna eller Grönland
			local typ = wikidata({entity = entity, property = 'P31', raw = 'true', noref = 'true'})
			if typ and #typ > 0 then
				if test('Q62326', typ) then -- Danmarks regionr
					local RegionfaktaDanmark = require('Modul:Regionfakta Danmark WD').ort
					return RegionfaktaDanmark(entity, args)
				elseif test('Q2177636', typ) or test('Q23036513', typ) then -- Danmarks kommuner (och fd)
					local KommunfaktaDanmark = require('Modul:Kommunfakta Danmark WD').ort
					return KommunfaktaDanmark(entity, args)
				elseif test('Q856079', typ) or test('Q96948740', typ) then -- Färöarnas kommuner
					local KommunfaktaFaroarna = require('Modul:Kommunfakta Färöarna WD').ort
					return KommunfaktaFaroarna(entity, args)
				elseif test('Q16511251', typ) or test ('Q57416832', typ) then -- Grönlands kommuner
					local KommunfaktaGronland = require('Modul:Kommunfakta Grönland WD').ort
					return KommunfaktaGronland(entity, args)
				else
					return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Giltig typ (P31) saknas i [[d:' .. entity.id .. '#P31|' .. entity.id .. ']]. (Danmark)</span>'
				end
			else
				return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Typ (P31) saknas i [[d:' .. entity.id .. '#P31|' .. entity.id .. ']]. (Danmark)</span>'
			end
		elseif test('Q30', land) then -- USA
			local typ = wikidata({entity = entity, property = 'P31', raw = 'true', noref = 'true'})
			if typ and #typ > 0 then
				if test('Q1093829', typ) or test('Q63440326', typ) or test('Q2154459', typ) then -- stad i USA, Oregon, New England
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q21518270', typ) then -- delstatshuvudstad
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q3957', typ) or test('Q15127012', typ) then -- town
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q106071004', typ) then -- town i NY
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q15221373', typ) then -- fourth class city in Wisconsin
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q15221370', typ) then -- third class city
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q15063611', typ) then -- city in NY
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q9035798', typ) or test('Q7830213', typ) or test('Q17351697', typ) then -- Township i Pennsylvania/New Jersey/NH
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q751708', typ) then -- Village
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q408804', typ) then -- Borough of NYC
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q2911266', typ) then -- Bourogh of NJ
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q777120', typ) then -- Borough of PENN
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q498162', typ) then -- CDP
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q17343829', typ) then -- kommunfritt område
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q74047', typ) then --spökstad
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q486972', typ) then -- Samhälle
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q15221242', typ) or test('Q55237813', typ) or test('Q532', typ) then -- By i Wisconsin/New York
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q15219655', typ) then -- civil town of Wisconsin
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				elseif test('Q123705', typ) then -- neighborhood
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args)
				else
					local ortsfaktaUSA = require('Modul:Ortsfakta USA WD').ort
					return ortsfaktaUSA(entity, args) .. '[[Kategori:Underhållskategori för Ortsfakta WD|Φ]]'
				end					
			else
				return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Typ (P31) saknas i [[d:' .. entity.id .. '#P31|' .. entity.id .. ']]. (USA)</span>'
			end
		elseif test('Q31', land) then -- Belgien
			local typ = wikidata({entity = entity, property = 'P31', raw = 'true', noref = 'true'})
			if typ and #typ > 0 then
				if test('Q15273785', typ) or test('Q493522', typ) or test('Q91028', typ) or test('Q83116', typ) or test('Q83057', typ) then -- kommun, stadskommun, arrondissement, provins och region
					local ortsfaktaBE = require('Modul:Kommunfakta Belgien WD').ort
					return ortsfaktaBE(entity, args)
				else
					return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Typ (P31) stöds inte i [[d:' .. entity.id .. '#P31|' .. entity.id .. ']]. (Belgien)</span>'
				end
			else
				return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Typ (P31) saknas i [[d:' .. entity.id .. '#P31|' .. entity.id .. ']]. (Belgien)</span>'
			end
		else
			return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Mallen stöder inte landet (P17) i [[d:' .. entity.id .. '#P17|' .. entity.id .. ']].</span>'
		end
	else
		return '[[Kategori:Underhållskategori för Ortsfakta WD]]<span class="error">Land (P17) saknas i [[d:' .. entity.id .. '|' .. entity.id .. ']].</span>'
	end
end

return p