Módulo:Classificação

A documentação para este módulo pode ser criada na página Módulo:Classificação/doc

local p = {}
local formattingData = require "Módulo:Classificação/Dados" --logotipos especiais e logotipos
local wikidata = require "Módulo:Infobox/Wikidata"
local linguistic = require "Módulo:Linguística"
local function groupStatements(statements) -- agrupa instruções com o mesmo mainid
				local newlist = {}
				for i, j in pairs(statements) do -- se esse id já é usado por outro elemento, para mover para um módulo + geral?
								local mainid = wikidata.getMainId(j)
								if not mainid then
												-- sem id, é um "valor especial"
								elseif not newlist[mainid] then
												newlist[mainid] = {j}
								else
												table.insert(newlist[mainid], j)
								end
				end
				return newlist
end
local function formatMainStr(id) --  exibe o nome do status de proteção com possivelmente um logotipo
				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 = {} -- informações adicionais armazenadas nos qualificadores
				for i, j in pairs(data) do
								local pdate = wikidata.getFormattedQualifiers(j, {'P580'}, {precision = 'year'}) -- data de classificação
								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)
				-- criar uma lista do status patrimonial do elemento
				params = params or {}
				params.excludespecial = true
				params.property = 'P1435'
				local claims = wikidata.getClaims(params)
				if not claims then
								return nil
				end
				local statuses = groupStatements(claims)
				local stringtable = {} -- lista de cadeias para retornar
				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