« Module:Matériau » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
mAucun résumé des modifications
0x010D (discussion | contributions)
Aucun résumé des modifications
Ligne 2 : Ligne 2 :
local wikidata = require('Module:Wikidata')
local wikidata = require('Module:Wikidata')
local linguistic = require('Module:Linguistique')
local linguistic = require('Module:Linguistique')
local speciallabels = { -- valeur du libellé défini ici plutôt que dans l'élément Wikidata (pour adaptation au contexte, léger gain de performance)
Q174705 = '[[Peinture à l\'huile|huile]]'
}


function p.formatFromItem(item)
function p.formatFromItem(item)
Ligne 12 : Ligne 16 :
local supportvals = {} -- comme dans huile ''sur toile''
local supportvals = {} -- comme dans huile ''sur toile''
for i, j in pairs(materials) do
for i, j in pairs(materials) do
local val = wikidata.formatSnak(j.mainsnak)
local val = wikidata.formatSnak(j.mainsnak, {speciallabels = speciallabels})
local typ = 'main' -- changé en 'support' s'il faut la mettre sur supportstr
local typ = 'main' -- changé en 'support' s'il faut la mettre sur supportstr
if j.qualifiers and j.qualifiers.P518 then -- P518: "s'applique à "
if j.qualifiers and j.qualifiers.P518 then -- P518: "s'applique à "
Ligne 26 : Ligne 30 :
table.insert(mainvals, val)
table.insert(mainvals, val)
end
end
local main = (linguistic.conj(mainvals) or '') .. '[[Catégorie:Page utilisant des données de Wikidata/P186]]'
end
local support = linguistic.conj(supportvals)
if support then
local main = (linguistic.conj(mainvals) or '') .. '[[Catégorie:Page utilisant des données de Wikidata/P186]]'
return main .. ' sur ' .. support
local support = linguistic.conj(supportvals)
else
if support then
return main
return main .. ' sur ' .. support
end
else
return main
end
end
end
end
return p
return p

Version du 10 mars 2015 à 08:08

local p = {} local wikidata = require('Module:Wikidata') local linguistic = require('Module:Linguistique')

local speciallabels = { -- valeur du libellé défini ici plutôt que dans l'élément Wikidata (pour adaptation au contexte, léger gain de performance) Q174705 = 'huile' }

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 mainvals = {} local supportvals = {} -- comme dans huile sur toile for i, j in pairs(materials) do local val = wikidata.formatSnak(j.mainsnak, {speciallabels = speciallabels}) local typ = 'main' -- changé en 'support' s'il faut la mettre sur supportstr if j.qualifiers and j.qualifiers.P518 then -- P518: "s'applique à " if wikidata.getRawvalue(j.qualifiers.P518[1]) == 'Q861259' then typ = 'support' else val = val ..linguistic.inparentheses(wikidata.formatSnak(j.qualifiers.P518[1], {link = '-'})) -- enlève le lien qui fait moche ici end end if typ == 'support' then table.insert(supportvals, val) else table.insert(mainvals, val) end end

local main = (linguistic.conj(mainvals) or ) .. local support = linguistic.conj(supportvals) if support then return main .. ' sur ' .. support else return main end end return p