Module:Matériau
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.
Argument | Type | Description |
---|---|---|
item |
chaîne | identifiant wikidata |
params |
table | paramètres de mise en forme |
Libellé | Paramètre | Wikidata | Description |
---|---|---|---|
Matériau | P186 (« matériau »)
|
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.
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
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