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: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
local function formatVals(ids, args)
local t = {}
for i, id in pairs(ids) do
table.insert(t, wikidata.formatEntity(id, args))
end
return linguistic.conj(t)
end
--- valeurs sans qualificatifs
local mainstr = linguistic.conj(withoutP518)
--- valeurs avec P518 utilisant la préposition "sur"
local supportstr
if withP518['Q861259'] then
supportstr = ' sur ' .. formatVals(withP518['Q861259'])
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 str = wikidata.formatEntity(part, {link = '-'})
str = str .. ' en ' .. formatVals(materials)
table.insert(strtable, str)
end
withpartstr = linguistic.conj(strtable, 'comma')
-- concaténation finale
mainstr = linguistic.conj({mainstr, withpartstr}, 'comma')
return mainstr
end
return p