[go: nahoru, domu]

Aller au contenu

Module:Matériau

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 27 août 2015 à 15:14 et modifiée en dernier par Zolo (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 Documentation[voir] [modifier] [historique] [purger]

Fonctions exportables

formatFromItem(item, params)

Affiche le matériau dans lequel est fait un objet en fonction des données stockées dans la propriété matériau de Wikidata et de paramètres de formatage (params). Ces paramètres de formatage sont les mêmes que ceux de la fonction formatStatements de Module:Wikidata.

Paramètres de la fonction
Argument Type Description
item chaîne identifiant wikidata
params table paramètres de mise en forme
Paramètre de l'infobox
Libellé Paramètre Wikidata Description
Matériau P186 (« matériau »)
Qualificateur :
P518 (« s'applique à »)
Liste les matériaux utilisés. Suivant la valeur du qualificateur de chaque matériau le comportement est le suivant :
* Pas de qualifcateur : les matériaux sont listés séparés par une virgule.
* le qualificateur vaut Q861259 (« support de peinture ») : les supports utilisés apparaitront précédés de « sur ».
* les autres qualificatifs permettront de décrire les composants de l'élément décrit.

Exemples :


Modules externes et autres éléments dont ce module a besoin pour fonctionner :


Exemples

Pour des exemples, voir la page de test permettant de tester diverses modifications apportées.

local p = {}
local wikidata = require 'Module:Interface Wikidata'.fromLua
local linguistic = require 'Module:Linguistique'

local speciallabels = { -- libellés définis localement, qui priment sur ceux de Wikidata
	Q296955 = '[[Peinture à l\'huile|huile]]',
	Q22731 = '[[Pierre naturelle|pierre]]',
	Q4259259 = '[[Toile (peinture)|toile]]',
}

function p.formatFromItem(item, params)	-- affiche le matériau en fonction de Property:P186, et de son qualificatif P518 ('s'applique à')
	params = params or {}
	params.speciallabels = speciallabels
	

	local claims = wikidata.getClaims{entity = item, property = 'P186'}
	if not claims then
		return nil
	end

	-- crée trois tables : main pour celle sans P518, support pour celle avec qualif "s'applique à "support de peinture" et "parts" pour les autres
	local main, support, parts = {}, {}, {}
	


	local function assignClaim(claim) -- met une claims dans la bonne table
		local str = wikidata.formatStatement(claim, params)
		if (not claim.qualifiers) or (not claim.qualifiers.P518) then
			table.insert(main, str)
		else
			for _, val in pairs(claim.qualifiers.P518) do
				local key = wikidata.getid(val)
				if key == 'Q861259' then
				table.insert(support, str)
				else
					parts[key] = parts[key] or {}
					table.insert(parts[key], str)
				end
			end	
		end
	end
	
	for i, j in pairs(claims) do
		assignClaim(j)
	end
	
	local str -- la chaîne à retourner
	
	-- transforme en chaîne la table des valeurs sans qualificatif
	local mainstr = linguistic.conj(main)
	
	-- ajoute le support de peinture (sur toile)
	local supportstr = linguistic.conj(support)
	if (mainstr and supportstr) then
		str = mainstr .. ' sur ' .. supportstr	
	end
	
	-- chaîne des autres valeurs avec qualifs: [piédestal] = {marbre, bronze} => 'piédestal en marbre et bronze'
	local formattedparts = {}
	for part, materials in pairs(parts) do
		local str = wikidata.formatEntity(part, {link = '-'}) .. '  en ' .. linguistic.conj(materials)
		table.insert(formattedparts, str)
	end
	local partsStr = linguistic.conj(formattedparts, 'comma')
	
	str = linguistic.conj({str, partsStr}, 'comma')
	if not str then
		return nil
	end
	if (params.linkback ~= '-') then
		str = wikidata.addLinkback(str, item, 'P186')
	end
	return  str .. wikidata.addtrackingcat('P186')
end

return p