« Module:Classement » : différence entre les versions
Apparence
Modèle:Infobox>Zolo + possibilité de customiser |
m 22 versions importées |
||
| (10 versions intermédiaires par 6 utilisateurs non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
local p = {} | local p = {} | ||
local | local formattingData = require "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 linguistic = require "Module:Linguistique" | ||
local function | local function groupStatements(statements) -- regroupe les statements avec même mainid | ||
local newlist = {} | local newlist = {} | ||
for i, j in pairs(statements) do | local indexbyid = {} --par mainid, indice où sont rangés les statements dans newlist | ||
for i, j in pairs(statements) do | |||
local mainid = wikidata.getMainId(j) | local mainid = wikidata.getMainId(j) | ||
if not mainid then | if not mainid then | ||
-- pas d'id, c'est une "special value" | -- pas d'id, c'est une "special value" | ||
elseif not | elseif not indexbyid[mainid] then | ||
newlist | table.insert(newlist, {mainid = mainid, data = {j}}) | ||
indexbyid[mainid] = #newlist | |||
else | else | ||
table.insert(newlist[mainid], j) | table.insert(newlist[indexbyid[mainid]].data, j) | ||
end | end | ||
end | end | ||
| Ligne 19 : | Ligne 21 : | ||
end | end | ||
local function | local function formatMainStr(id) -- affiche le nom du statut du protection avec éventuellement un logo | ||
local str, logo | local str, logo | ||
if | if formattingData[id] then | ||
str = | str = formattingData[id][1] | ||
logo = | logo = formattingData[id][2] | ||
else | else | ||
str = wikidata.formatEntity(id) | str = wikidata.formatEntity(id) | ||
| Ligne 33 : | Ligne 35 : | ||
end | end | ||
local function | local function formatStatus(id, data) | ||
local mainstr = | local mainstr = formatMainStr(id) -- | ||
local details = {} -- informations complémentaires stockées dans les qualificatifs | local details = {} -- informations complémentaires stockées dans les qualificatifs | ||
for i, j in pairs(data) do | for i, j in pairs(data) do | ||
| Ligne 52 : | Ligne 54 : | ||
function p.formattedList(item, params) | function p.formattedList(item, params) | ||
-- créé une liste des status patrimoniaux de l'élement | -- créé une liste des status patrimoniaux de l'élement | ||
params = params or {} | params = params or { entity = item } | ||
params.excludespecial = true | params.excludespecial = true | ||
params.property = 'P1435' | params.property = 'P1435' | ||
| Ligne 59 : | Ligne 61 : | ||
return nil | return nil | ||
end | end | ||
local statuses = | local statuses = groupStatements(claims) | ||
local stringtable = {} -- liste des chaînes à retourner | local stringtable = {} -- liste des chaînes à retourner | ||
for | for i, j in pairs(statuses) do | ||
table.insert(stringtable, | table.insert(stringtable, formatStatus(j.mainid, j.data)) | ||
end | end | ||
local val = linguistic.conj(stringtable, "new line") .. wikidata. | local val = linguistic.conj(stringtable, "new line") .. wikidata.addTrackingCat('P1435') | ||
return wikidata. | return wikidata.addLinkBack(val, item, 'P1435') | ||
end | end | ||
return p | return p | ||
Dernière version du 22 février 2026 à 00:17
La documentation pour ce module peut être créée à Module:Classement/doc
local p = {}
local formattingData = require "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
local newlist = {}
local indexbyid = {} --par mainid, indice où sont rangés les statements dans newlist
for i, j in pairs(statements) do
local mainid = wikidata.getMainId(j)
if not mainid then
-- pas d'id, c'est une "special value"
elseif not indexbyid[mainid] then
table.insert(newlist, {mainid = mainid, data = {j}})
indexbyid[mainid] = #newlist
else
table.insert(newlist[indexbyid[mainid]].data, 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|alt=|link=]] ' .. 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({part, pdate}, ' en ')
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, params)
-- créé une liste des status patrimoniaux de l'élement
params = params or { entity = item }
params.excludespecial = true
params.property = 'P1435'
local claims = wikidata.getClaims(params)
if not claims then
return nil
end
local statuses = groupStatements(claims)
local stringtable = {} -- liste des chaînes à retourner
for i, j in pairs(statuses) do
table.insert(stringtable, formatStatus(j.mainid, j.data))
end
local val = linguistic.conj(stringtable, "new line") .. wikidata.addTrackingCat('P1435')
return wikidata.addLinkBack(val, item, 'P1435')
end
return p