Module:Classement : Différence entre versions

De Lagny-sur-Marne Wiki
Aller à : navigation, rechercher
(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
--utilise Module:Classement/Données pour les abréviations, redirects et logos
 
 
 
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 = {}-- 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 pstatus then
 
-- pas d'id, c'est une "special value"
 
elseif 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
 +
 
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 à 21: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