« Module:Classement » : différence entre les versions
Apparence
Modèle:Infobox>Zolo Aucun résumé des modifications |
Modèle:Infobox>Zolo corrections, ajustements, nettoyage |
||
| Ligne 1 : | Ligne 1 : | ||
local p = {} | local p = {} | ||
local formattingdata = mw.loadData('Module:Classement/Données') | local formattingdata = mw.loadData('Module:Classement/Données') --libellés spéciaux et logos | ||
local wikidata = require('Module:Wikidata') | local wikidata = require('Module:Wikidata') | ||
local linguistic = require ('Module:Linguistique') | |||
local function groupstatements(statements) -- regroupe les statements avec même mainid (à déplacer vers un module + général ? | |||
local newlist = {} | |||
for i, j in pairs(statements) do -- si cet id est déjà utilsé par un autre élément, les regrouper à faire dans un module plus général ? | |||
local mainid = wikidata.getmainid(j) | |||
if not mainid then | |||
-- pas d'id, c'est une "special value" | |||
elseif not newlist[mainid] then | |||
newlist[mainid] = {j} | |||
else | |||
table.insert(newlist[mainid], j) | |||
end | |||
end | |||
return newlist | |||
end | |||
local function formatmainstr(id) -- affiche le nom du statut du protection avec éventuellement un logo | |||
local str, logo | |||
if formattingdata[id] then | |||
str = formattingdata[id][1] | |||
logo = formattingdata[id][2] | |||
else | |||
str = wikidata.formatEntity(id) | |||
end | |||
if logo then | |||
str = '[[File:' .. logo .. '|x18px]] ' .. str | |||
end | |||
return str | |||
end | |||
local function formatstatus(id, data) | |||
local mainstr = formatmainstr(id) -- | |||
local details = {} -- informations complémentaires stockées dans les qualificatifs | |||
for i, j in pairs(data) do | |||
local pdate = wikidata.getFormattedQualifiers(j, {'P580'}, {precision = 'year'}) -- date de classement | |||
local part = wikidata.getFormattedQualifiers(j, {'P518'}, {link = '-'}) -- partie protégée | |||
local str = linguistic.conj({pdate, part}, ' : ') | |||
table.insert(details, str) | |||
end | |||
details = linguistic.conj(details, 'comma') | |||
details = linguistic.inparentheses(details) | |||
if details then | |||
return mainstr .. ' <small>' .. details .. '<small>' | |||
end | |||
return mainstr | |||
end | |||
function p.formattedList(item) | function p.formattedList(item) | ||
-- créé une liste des status patrimoniaux de l'élement | -- créé une liste des status patrimoniaux de l'élement | ||
local claims = wikidata.getClaims({entity = item, property = 'P1435', exludespecial = true}) | local claims = wikidata.getClaims({entity = item, property = 'P1435', exludespecial = true}) | ||
if not claims then | if not claims then | ||
return nil | return nil | ||
end | end | ||
local statuses = groupstatements(claims) | |||
local statuses = | |||
local stringtable = {} -- liste des chaînes à retourner | local stringtable = {} -- liste des chaînes à retourner | ||
for id, data in pairs(statuses) do | |||
table.insert(stringtable, formatstatus(id, data)) | |||
end | end | ||
local val = table.concat(stringtable, '<br />') .. wikidata.addtrackingcat('P1435') | local val = table.concat(stringtable, '<br />') .. wikidata.addtrackingcat('P1435') | ||
return wikidata.addLinkback(val, item, 'P1435') | return wikidata.addLinkback(val, item, 'P1435') | ||
end | end | ||
return p | return p | ||
Version du 23 avril 2015 à 23:29
La documentation pour ce module peut être créée à Module:Classement/doc
local p = {}
local formattingdata = mw.loadData('Module:Classement/Données') --libellés spéciaux et logos
local wikidata = require('Module:Wikidata')
local linguistic = require ('Module:Linguistique')
local function groupstatements(statements) -- regroupe les statements avec même mainid (à déplacer vers un module + général ?
local newlist = {}
for i, j in pairs(statements) do -- si cet id est déjà utilsé par un autre élément, les regrouper à faire dans un module plus général ?
local mainid = wikidata.getmainid(j)
if not mainid then
-- pas d'id, c'est une "special value"
elseif not newlist[mainid] then
newlist[mainid] = {j}
else
table.insert(newlist[mainid], j)
end
end
return newlist
end
local function formatmainstr(id) -- affiche le nom du statut du protection avec éventuellement un logo
local str, logo
if formattingdata[id] then
str = formattingdata[id][1]
logo = formattingdata[id][2]
else
str = wikidata.formatEntity(id)
end
if logo then
str = '[[File:' .. logo .. '|x18px]] ' .. str
end
return str
end
local function formatstatus(id, data)
local mainstr = formatmainstr(id) --
local details = {} -- informations complémentaires stockées dans les qualificatifs
for i, j in pairs(data) do
local pdate = wikidata.getFormattedQualifiers(j, {'P580'}, {precision = 'year'}) -- date de classement
local part = wikidata.getFormattedQualifiers(j, {'P518'}, {link = '-'}) -- partie protégée
local str = linguistic.conj({pdate, part}, ' : ')
table.insert(details, str)
end
details = linguistic.conj(details, 'comma')
details = linguistic.inparentheses(details)
if details then
return mainstr .. ' <small>' .. details .. '<small>'
end
return mainstr
end
function p.formattedList(item)
-- créé une liste des status patrimoniaux de l'élement
local claims = wikidata.getClaims({entity = item, property = 'P1435', exludespecial = true})
if not claims then
return nil
end
local statuses = groupstatements(claims)
local stringtable = {} -- liste des chaînes à retourner
for id, data in pairs(statuses) do
table.insert(stringtable, formatstatus(id, data))
end
local val = table.concat(stringtable, '<br />') .. wikidata.addtrackingcat('P1435')
return wikidata.addLinkback(val, item, 'P1435')
end
return p