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 à 08:33 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, args)
	args = args or {}
	-- affiche le matériau en fonction de Property:P186, et de son qualificatif P518 ('s'applique à')
	local materials = wikidata.getClaims{entity = item, property = 'P186'}
	if not materials then
		return nil
	end

	-- créé une table de chaînes avec les différents matériaux
	local withP518, withoutP518 = {}, {}

	local function addStatement(statement) 	-- ajout d'un chaîne à la table des valeurs
		 -- valeur de base
		local mainid = wikidata.getmainid(statement)
		local str = wikidata.formatEntity(mainid, {speciallabels = speciallabels})

		if (not statement.qualifiers) or (not statement.qualifiers.P518) then
			table.insert(withoutP518, str)
			return
		end
		
		for _, qualif in pairs(statement.qualifiers.P518) do
			local key = wikidata.getid(qualif)
			withP518[key] = withP518[key] or {}
			table.insert(withP518[key], mainid)
		end
	end
	for i, j in pairs(materials) do
		addStatement(j)
	end

	-- concaténation des différentes tables de valeur
	
	--- valeurs sans qualificatifs
	local mainstr = linguistic.conj(withoutP518)

	--- valeurs avec P518 utilisant la préposition "sur"
	local supportstr
	if withP518['Q861259'] then
		local v = withP518['Q861259']
		supportstr = ' sur ' .. linguistic.conj(v)
		withP518['Q861259'] = nil
	end
	if mainstr or supportstr then
		mainstr = (mainstr or '').. (supportstr or '')
	end
	
	--- autres qualificatifs : préposition "en"
	local withpartstr
	local strtable = {}
	for part, materials in pairs(withP518) do
		local partstr = wikidata.getLabel(part)
		local v = {}
		for i, j in pairs(materials) do
			table.insert(v, wikidata.formatEntity(j))
		end
		local str = partstr .. ' en ' .. linguistic.conj(v)
		table.insert(strtable, str)
	end
	withpartstr = linguistic.conj(strtable, 'comma')
	
	-- concaténation finale
	mainstr = linguistic.conj({mainstr, withpartstr}, 'comma')

	return mainstr
end
return p