Module:Infobox/Infobox universelle

Cette page définit un module d'infobox. Pour les conseils sur l'usage de ce module, voyez Modèle:Infobox  .

Utilisation

Fonctions exportables :

  • main(frame) – détermine le module d'infobox à appeler, en fonction de l'élément Wikidata dont on génère l'infobox
  • templateName(frame) – nom du modèle d'infobox correspondant, en distinguant les utilisations du module monument "par défaut" ou parce que l'élément est un monument.
local p = {}
local isInstance = require( 'Module:Wikidata' ).isInstance

local function choosetype(item)
	
	local infoboxtype = "Monument par défaut" -- à l'origine considérée plus ou moins passe partout

	if isInstance("Q5", item, 0) or isInstance("Q21070598", item, 10) then -- "être humain" ou "personnage peut-être fictionnel"
		infoboxtype = "Biographie"
		elseif isInstance("Q11908691", item, 6) then --"structure physique artificielle"
		infoboxtype = "Monument"
	elseif isInstance("Q15324", item, 4) then --"étendue d'eau"
		infoboxtype = "Plan d'eau"
	elseif isInstance("Q56061", item, 3) or isInstance("Q123964505", item, 5) then -- "entité territoriale administrative" ou "lieu habité"
		infoboxtype = "Localité"
	elseif isInstance("Q47461344", item, 3) then
		infoboxtype = "Ouvrage"
	elseif isInstance("Q43229", item, 5) then
		infoboxtype = "Organisation"
	elseif isInstance("Q11460", item, 5) then
		infoboxtype = "Vêtement"
	elseif isInstance("Q116474095", item, 3) then -- "type d'œuvre d'art"
		infoboxtype = "Art"
	end
	return infoboxtype
end

function p.main(frame)
	local item = frame.args[1]
	local infoboxtype = choosetype(item)
	local modulename = (infoboxtype == "Monument par défaut") and "Monument" or infoboxtype
	return modulename
end

local templateNameList = {
	["Monument"] = "Monument",
	["Monument par défaut"] = "Monument par défaut",
	["Biographie"] = "Biographie2",
	["Plan d'eau"] = "Plan d'eau",
	["Localité"] = "Localité",
	["Ouvrage"] = "Ouvrage",
	["Organisation"] = "Organisation2",
	["Vêtement"] = "Vêtement",
	["Art"] = "Art"
}

function p.templateName(frame)
	local item = frame.args[1]
	local infoboxtype = choosetype(item)
	local templatename = templateNameList[infoboxtype]
	return templatename
end


return p