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]]',
Q2448108 = 'structure', --QID de "gros oeuvre" mais parait un peu bizarre dans des contexte comme "gros oeuvre en acier"
}
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
-- 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)
mainstr = linguistic.conj({mainstr, supportstr}, ' sur ')
-- 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 = '-', speciallabels = speciallabels}) .. ' en ' .. linguistic.conj(materials)
table.insert(formattedparts, str)
end
local partsStr = linguistic.conj(formattedparts, 'comma')
mainstr = linguistic.conj({mainstr, partsStr}, 'comma')
if (params.linkback ~= '-') then
mainstr = wikidata.addLinkBack(mainstr, item, 'P186')
end
return mainstr .. wikidata.addTrackingCat('P186')
end
return p