[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 8 août 2015 à 00:51 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:Wikidata')
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)
	-- affiche le matériau en fonction de Property:P186, et de son qualificatif P518 ('s'applique à')
	local materials = wikidata.getClaims{item = item, property = 'P186'}
	if not materials then
		return nil
	end
	local vals = {} -- table des valeurs formatées
	vals.main = {} -- valeurs sans qualficatif P518
	for i, j in pairs(materials) do
		local val = wikidata.formatSnak(j.mainsnak, {speciallabels = speciallabels})
		if not j.qualifiers or not j.qualifiers.P518 then
			table.insert(vals.main, val)
		else for k, qualif in pairs(j.qualifiers.P518) do
			local key = wikidata.getid(qualif)
			if not vals[key] then
				vals[key] = {}
			end
			table.insert(vals[key], val)
		end end
	end

	local mainstr, supportstr, withpartstr -- supportstr pour le support de peintrue, withpartstr, pour celle avec un autre qualificateur P518
	
	mainstr = linguistic.conj(vals.main)
	vals.main = nil
	if vals['Q861259'] then
		supportstr = ' sur ' .. linguistic.conj(vals['Q861259'])
		vals['Q861259'] = nil
	end
	
	local withpart = {} -- table des données contenant un qualificatif P518, sauf "support de peinture"
	for part, materials in pairs(vals) do
		table.insert(withpart, wikidata._getLabel(part) .. ' en ' .. linguistic.conj(materials))
	end
	withpartstr = linguistic.conj(withpart, 'comma')
	if mainstr or supportstr then
		mainstr = (mainstr or '').. (supportstr or '')
	end
	mainstr = linguistic.conj({mainstr, withpartstr}, 'comma')
	return wikidata.addLinkback(mainstr, item, 'P186') .. wikidata.addtrackingcat('P186')
end
return p