« Module:Classement » : différence entre les versions

De Lagny-sur-Marne Wiki
Aller à la navigation Aller à la recherche
0x010D (discussion | contributions)
Prise d'indépendance de Module:Infobox Monument
 
0x010D (discussion | contributions)
mAucun résumé des modifications
 
(10 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
local formattingdata = mw.loadData('Module:Classement/Données')
local p = {}
local wikidata = require('Module:Wikidata')
local formattingdata = require "Module:Classement/Données" --libellés spéciaux et logos
local wikidata = require "Module:Interface Wikidata".fromLua
local linguistic = require "Module:Linguistique"
 
local function groupstatements(statements) -- regroupe les statements avec même mainid
local newlist = {}
for i, j in pairs(statements) do -- si cet id est déjà utilisé par un autre élément, à déplacer vers un module + 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|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)
function p.formattedList(item)
local claims = wikidata.getClaims({item = item, property = 'P1435', exludespecial = true})
-- créé une liste des status patrimoniaux de l'élement
local claims = wikidata.getClaims({entity = item, property = 'P1435', excludespecial = true})
if not claims then
if not claims then
return nil
return nil
end
end
local statuses = groupstatements(claims)
local statuses = {}-- nouvelle table pour ne pas afficher séparément deux statements décrivant le même statut
for i, j in pairs(claims) do
local pstatus = wikidata.getmainid(j)
if not statuses[pstatus] then
statuses[pstatus] = {j}
else
table.insert(statuses[pstatus], j)
end
end
local stringtable = {} -- liste des chaînes à retourner
local stringtable = {} -- liste des chaînes à retourner
for i, j in pairs(statuses) do
local mainstr = ''
if formattingdata[i] then
mainstr = formattingdata[i][1]
else
mainstr = wikidata.formatEntity(i)
end
local logostr = ''
if formattingdata[i] and formattingdata[i][2] then
logostr = '[[File:' .. formattingdata[i][2] .. '|x18px]] '
end


local t = {} -- informations complémentaires sur les dates et les parties concernées
for id, data in pairs(statuses) do
for k, l in pairs(j) do
table.insert(stringtable, formatstatus(id, data))
local protectiondate = wikidata.getFormattedQualifiers(l, {'P580'}, {precision = 'year'})
if protectiondate then
table.insert(t, protectiondate)
end
end
local details = table.concat(t, ", ")
if details ~= '' then
details = ' <small>(' .. details ..  ')</small>'
else
details = ''
end
table.insert(stringtable, logostr .. mainstr .. details)
end
end
return table.concat(stringtable, '<br />') .. '[[Catégorie:Page utilisant des données de Wikidata/P1435]]'
 
local val = linguistic.conj(stringtable, "new line") .. wikidata.addtrackingcat('P1435')
return wikidata.addLinkback(val, item, 'P1435')
end
end
return p

Dernière version du 20 mars 2016 à 22:34

local p = {} local formattingdata = require "Module:Classement/Données" --libellés spéciaux et logos local wikidata = require "Module:Interface Wikidata".fromLua local linguistic = require "Module:Linguistique"

local function groupstatements(statements) -- regroupe les statements avec même mainid local newlist = {} for i, j in pairs(statements) do -- si cet id est déjà utilisé par un autre élément, à déplacer vers un module + 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 = 'Fichier:' .. logo .. ' ' .. 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 .. ' ' .. details .. '' 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', excludespecial = 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 = linguistic.conj(stringtable, "new line") .. wikidata.addtrackingcat('P1435') return wikidata.addLinkback(val, item, 'P1435') end

return p