Moduulin Fr:Matériau käyttöohje
Tämä sivu on kopio. Tätä ohjetta muokataan muokkaamalla suomenkielisessä Wikipediassa olevaa alkuperäistä versiota jonka muutokset kopioituvat automaattisesti tälle sivulle. Tämä moduuli on osa ranskankielisestä Wikipediasta kopioitua Wikidata ja Interface Wikidata -moduulikokonaisuutta (ks. ohjeet ja esimerkit). Listauksen kaikista tähän liittyvistä moduuleista löydät Ranskankielisen Wikipedian Wikidata-moduulit -sivulta.
|
local p = {}
local wikidata = require 'Module:Fr:Interface Wikidata'.fromLua
local linguistic = require 'Module:Fr:Linguistique'
local speciallabels = { -- libellés définis localement, qui priment sur ceux de Wikidata
--Q296955 = ']',
--Q22731 = ']',
--Q4259259 = ']',
--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 = parts or {}
table.insert(parts, 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
mainstr = linguistic.conj(main)
-- ajoute le support de peinture (sur toile)
local supportstr = linguistic.conj(support)
mainstr = linguistic.conj({mainstr, supportstr}, ' ja ')
-- chaîne des autres valeurs avec qualifs: = {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}) .. ': ' .. 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