Módulo:Material

Fonte: Enciclopédia de conhecimento da Igreja de Deus
Saltar para a navegação Saltar para a pesquisa

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

local p = {}
local wikidata = require 'Módulo:Infobox/Wikidata'
local linguistic = require 'Módulo:Linguística'
local speciallabels = { -- Rótulos definidos localmente, que substituem os do Wikidata
				Q296955 = '[[Pintura a óleo|óleo]]',
				Q22731 = '[[Pedra natural|pedra]]',
				Q4259259 = '[[Tela]]',
				Q2448108 = 'estrutura', --QID de "shell", mas parece um pouco estranho no contexto como "concha de aço"
}
function p.formatFromItem(item, params)    -- exibe o material de acordo com a Propriedade: P186 e seu qualificador P518 ('aplica-se a')
				params = params or {}
				params.speciallabels = speciallabels
				
				local claims = wikidata.getClaims{entity = item, property = 'P186'}
				if not claims then
								return nil
				end
				-- cria três tabelas: mão para o único sem P518, suporte para aquele com qual "aplica-se a" suporte de pintura "e" partes "para outros
				local main, support, parts = {}, {}, {}
				local function assignClaim(claim) -- coloca um claim no lugar certo
								local str = wikidata.formatStatement(claim, params)
								if (not claim.qualifiers) or (not claim.qualifiers.P518) then
												table.insert(main, str)
								else
												for _, val in pairs(claim.qualifiers.P518) do
																local key = wikidata.getId(val)
																if key == 'Q861259' then
																table.insert(support, str)
																else
																				parts[key] = parts[key] or {}
																				table.insert(parts[key], str)
																end
												end    
								end
				end
				
				for i, j in pairs(claims) do
								assignClaim(j)
				end
				
				-- transforma a tabela de valores sem um qualificador em uma string
				local mainstr = linguistic.conj(main)
				
				-- adicione o suporte de pintura (na tela)
				local supportstr = linguistic.conj(support)
				mainstr = linguistic.conj({mainstr, supportstr}, ' sobre ')
				
				-- string de outros valores com qualificadores: [pedestal] = {marble, bronze} => 'pedestal de mármore e bronze'
				local formattedparts = {}
				for part, materials in pairs(parts) do
								local str = wikidata.formatEntity(part, {link = '-', speciallabels = speciallabels}) .. '  em ' .. linguistic.conj(materials)
								table.insert(formattedparts, str)
				end
				local partsStr = linguistic.conj(formattedparts, 'comma')
				
				mainstr = linguistic.conj({mainstr, partsStr}, 'comma')
				if (params.linkback ~= '-') then
								mainstr = wikidata.addLinkBack(mainstr, item, 'P186')
				end
				return  mainstr .. wikidata.addTrackingCat('P186')
end
return p