Module:Classement

Cette page fait l’objet d’une mesure de semi-protection étendue.
Une page de Wikipédia, l'encyclopédie libre.

 Documentation[voir] [modifier] [historique] [purger]

Utilisation

Fonction utilisable depuis un autre module Lua :

  • fonction formattedlist(item, params) – prend pour argument l'identifiant Wikidata d'un monument (ou la table complète de son élément Wikidata déjà chargée) et liste les protections patrimoniales dont il fait l'objet. params désigne les paramètres habituels des fonction Wikidata voir Module:Wikidata/Documentation).
Le comportement de cette fonction est proche de celui de Module:Wikidata.formatStatements{property ="P1425", showdate = true, precision = "year", showqualifiers = "P518"} mais des mises en forme supplémentaires sont effectuées pour éviter les répétitions et rendre le texte plus naturel.

Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.

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 = {}
	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, 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 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