« Module:Matériau » : différence entre les versions
Aucun résumé des modifications |
m speciallabel pour gros oeuvre |
||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| Ligne 7 : | Ligne 7 : | ||
Q22731 = '[[Pierre naturelle|pierre]]', | Q22731 = '[[Pierre naturelle|pierre]]', | ||
Q4259259 = '[[Toile (peinture)|toile]]', | Q4259259 = '[[Toile (peinture)|toile]]', | ||
Q2448108 = 'structure', --QID de "gros oeuvre" mais parait un peu bizarre dans des contexte comme "gros oeuvre en acier" | |||
} | } | ||
| Ligne 13 : | Ligne 14 : | ||
params.speciallabels = speciallabels | params.speciallabels = speciallabels | ||
local claims = wikidata.getClaims{entity = item, property = 'P186'} | local claims = wikidata.getClaims{entity = item, property = 'P186'} | ||
if not claims then | if not claims then | ||
| Ligne 21 : | Ligne 21 : | ||
-- crée trois tables : main pour celle sans P518, support pour celle avec qualif "s'applique à "support de peinture" et "parts" pour les autres | -- 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 main, support, parts = {}, {}, {} | ||
| Ligne 44 : | Ligne 43 : | ||
assignClaim(j) | assignClaim(j) | ||
end | end | ||
-- transforme en chaîne la table des valeurs sans qualificatif | -- transforme en chaîne la table des valeurs sans qualificatif | ||
mainstr = linguistic.conj(main) | |||
-- ajoute le support de peinture (sur toile) | -- ajoute le support de peinture (sur toile) | ||
local supportstr = linguistic.conj(support) | 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' | -- chaîne des autres valeurs avec qualifs: [piédestal] = {marbre, bronze} => 'piédestal en marbre et bronze' | ||
local formattedparts = {} | local formattedparts = {} | ||
for part, materials in pairs(parts) do | for part, materials in pairs(parts) do | ||
local str = wikidata.formatEntity(part, {link = '-'}) .. ' en ' .. linguistic.conj(materials) | local str = wikidata.formatEntity(part, {link = '-', speciallabels = speciallabels}) .. ' en ' .. linguistic.conj(materials) | ||
table.insert(formattedparts, str) | table.insert(formattedparts, str) | ||
end | end | ||
local partsStr = linguistic.conj(formattedparts, 'comma') | local partsStr = linguistic.conj(formattedparts, 'comma') | ||
mainstr = linguistic.conj({mainstr, partsStr}, 'comma') | |||
if (params.linkback ~= '-') then | if (params.linkback ~= '-') then | ||
mainstr = wikidata.addLinkback(mainstr, item, 'P186') | |||
end | end | ||
return | return mainstr .. wikidata.addtrackingcat('P186') | ||
end | end | ||
return p | return p | ||
Dernière version du 27 août 2015 à 16:46
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 = 'huile', Q22731 = 'pierre', Q4259259 = '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 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