Módulo:Cartas

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:Cartas/doc

--[[
		Módulo que devolve as cores ligadas à carta indicada
--]]
local p = {}
-- carregar o módulo de dados
local success, data = pcall(mw.loadData, "Módulo:Cartas/dados")
--[[
			Função realmente manipulando o pedido (veja os parâmetros abaixo)
			Pode ser chamado diretamente de outro módulo sem passar por
			uma chamada de modelo/módulo no wikicode
			
--]]
function p.carta_m(infobox, categoria, tpe, sustenido)
				-- validação dos parâmetros (valor por padrão)
				if (infobox == nil) then infobox = "biografia" end
				if (categoria == nil) then categoria = "primária" end
				if ((tpe == nil) or (tpe == "")) then tpe = "padrão" end
				-- interromper se o carregamento do módulo de dados falhar
				if (not success) then
								return "<span class=\"error\">Problema interno no módulo (dados)</span>"
				end
				
				-- verificação da existência dos dados para a infobox
				if (data[infobox] == nil) then
								infobox = "biografia"
								if (data[infobox] == nil) then
												-- não deveria acontecer !
												return "<span class=\"error\">Problema interno no módulo (infobox)</span>"
								end
				end
				-- se este tipo contiver uma cadeia de texto (ao invés de uma tabela) é um "redireccionamento", nós substítuimos
				if (type(data[infobox][tpe]) == "string") then
								tpe = data[infobox][tpe]
				end
				-- nós checamos a existência do tipo
				if (data[infobox][tpe] == nil) then
								tpe = "padrão"
								if (data[infobox][tpe] == nil) then
												return "<span class=\"error\">Problema interno no módulo (tipo)</span>"
								end
				end
				-- procuramos o número do pedido da categoria
				local n = 1
				if (categoria == "primária" or categoria == "1" or categoria == "principal") then
								n = 1
				elseif (categoria == "secundária" or categoria == "2") then
								n = 2
				elseif (categoria == "terciária" or categoria == "3") then
								n = 3
								-- a 3ª é opcional
								if (data[infobox][tpe][n] == nil) then
												n = 1
								end
				end -- se não for encontrado, fique em "1"
				
				-- nós verificamos se temos um elemento
				if (data[infobox][tpe][n] == nil) then
								return "<span class=\"error\">Problema interno no módulo (elemento)</span>"
				end
				
				-- nós retornamos o valor
				if ((sustenido == "sim") or (sustenido == true)) then
								return "#" .. data[infobox][tpe][n]
				else
								return data[infobox][tpe][n]
				end
end
--[[
			Retorna a cor correspondente ao gráfico solicitado.
			Os parâmetros são:
					tipo: o tipo de carta de cor solicitada (depende da infobox)
					categoria: primária ou secundária (ou terciário), a sub-cor em questão
					infobox: a infobox em questão (valor padrão: biografia)
					sustenido: defina como "sim" para prefixar o valor retornado com um caractere "#"
			Se a categoria não for especificada ou errônea, a principal será retornada
			Se o tipo não for especificado ou inválido, o "padrão" será retornado
			Se a infobox não for especificada ou inválida, a "biografia" é retornada
	
			Os parâmetros podem vir da chamada para o módulo ou da chamada para o modelo (avaliado nesta ordem).
	
			Nota: invólucro recuperando os parâmetros e chamando a função "real"
--]]
function p.carta(frame)
				local infobox = frame.args["infobox"] or frame:getParent().args["infobox"]
				local categoria = frame.args["categoria"] or frame:getParent().args["categoria"]
				local tpe = mw.ustring.lower(frame.args["tipo"] or frame:getParent().args["tipo"] or "")
				local sustenido = frame.args["sustenido"] or frame:getParent().args["sustenido"]
				
				return p.carta_m(infobox, categoria, tpe, sustenido)
end
return p