Módulo:Cartas
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