Module:Cartas

-- 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 "Problema interno no módulo (dados) " 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 "Problema interno no módulo (infobox) " 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 "Problema interno no módulo (tipo) " 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 "Problema interno no módulo (elemento) " 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 " 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