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

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
m plus joli comma ça en fait
0x010D (discussion | contributions)
mAucun résumé des modifications
Ligne 9 : Ligne 9 :
}
}


function p.formatFromItem(item)
function p.formatFromItem(item, args)
args = args or {}
-- affiche le matériau en fonction de Property:P186, et de son qualificatif P518 ('s'applique à')
-- affiche le matériau en fonction de Property:P186, et de son qualificatif P518 ('s'applique à')
local materials = wikidata.getClaims{item = item, property = 'P186'}
local materials = wikidata.getClaims{entity = item, property = 'P186'}
if not materials then
if not materials then
return nil
return nil
Ligne 48 : Ligne 49 :
end
end
mainstr = linguistic.conj({mainstr, withpartstr}, 'comma')
mainstr = linguistic.conj({mainstr, withpartstr}, 'comma')
return wikidata.addLinkback(mainstr, item, 'P186') .. wikidata.addtrackingcat('P186')
if (args.linkback ~= '-') then
mainstr = wikidata.addLinkback(mainstr, item, 'P186')
end
return  mainstr .. wikidata.addtrackingcat('P186')
end
end
return p
return p

Version du 19 août 2015 à 07:38

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 = 'huile', Q22731 = 'pierre', Q4259259 = '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 local vals = {} -- table des valeurs formatées vals.main = {} -- valeurs sans qualficatif P518 for i, j in pairs(materials) do local val = wikidata.formatSnak(j.mainsnak, {speciallabels = speciallabels}) if not j.qualifiers or not j.qualifiers.P518 then table.insert(vals.main, val) else for k, qualif in pairs(j.qualifiers.P518) do local key = wikidata.getid(qualif) if not vals[key] then vals[key] = {} end table.insert(vals[key], val) end end end

local mainstr, supportstr, withpartstr -- supportstr pour le support de peintrue, withpartstr, pour celle avec un autre qualificateur P518

mainstr = linguistic.conj(vals.main) vals.main = nil if vals['Q861259'] then supportstr = ' sur ' .. linguistic.conj(vals['Q861259']) vals['Q861259'] = nil end

local withpart = {} -- table des données contenant un qualificatif P518, sauf "support de peinture" for part, materials in pairs(vals) do table.insert(withpart, wikidata._getLabel(part) .. ' en ' .. linguistic.conj(materials)) end withpartstr = linguistic.conj(withpart, 'comma') if mainstr or supportstr then mainstr = (mainstr or ).. (supportstr or ) end mainstr = linguistic.conj({mainstr, withpartstr}, 'comma') if (args.linkback ~= '-') then mainstr = wikidata.addLinkback(mainstr, item, 'P186') end return mainstr .. wikidata.addtrackingcat('P186') end return p