Módulo:Cartas
Este módulo está classificado como pré-alfa. Ele está incompleto, e pode ou não estar em desenvolvimento activo. Ele deve ser utilizado desde páginas do domínio artigos. Os módulos ficam em pre-alfa até o editor original (ou alguém que toma conta se ele for abandonado por algum tempo) está satisfeito com a estrutura básica. |
Utilização
editarFunção exportável :
carta(frame)
– devolve a cor que corresponde à info caixa, a categoria e o tipo de carta gráfica desejada- Parâmetros :
- infobox= : indica o tipo de infobox (a cada tipo de infobox pode ter as suas cartas gráficas). Valor por padrão : "biografia"
- tipo= : tipo de carta no marco da infobox escolhida. Valor por padrão : "padrão"
- categoria= : categoria de cor no marco da infobox e do tipo de carta. Os valores possíveis são "principal" (ou "1" ou "primário"), "secundário" (ou "2"), eventualmente "terciário" (ou "3"). Valor por padrão : "primário"
- sustenido=sim : a cor devolvida está precedida do sustenido (#). Valor por padrão : ausente (o # não é inserido)
- Parâmetros :
Nota : a opção sustenido=sim põe o problema : o # é interpretado durante o regresso do módulo, gerando um começo de lista numerada. Não utilizar por enquanto.
Função utilizável directamente desde outro módulo :
carta_m(infobox, categorie, tpe, sustenido)
- função idêntica à precedente, mas chamada directamente desde outro módulo (nota : sustenido pode valer « sim » ou true)
Sub-módulo de dados
editarEste módulo utiliza o sub-módulo Módulo:Cartas/dados que descreve as cartas gráficas para as diferentes infobox, tipos e categorias.
Formato
editarO formato deste sub-módulo é o seguinte :
- uma entrada na tabela data para a cada infobox gerada
- esta entrada tem que ter como índice o nome da infobox (como passado ao parâmetro infobox=). Isto pode se fazer de dois modos :
data.nome = { … }
para o infobox « nome », se e só se « nome » só contém das letras não acentuadas (e não tem espaços)data["nome"] = { … }
para a infobox « nome », nos demais casos (espaços, acentos, outros caracteres)
- esta entrada é uma tabela em que a cada elemento descrito um tipo de carta. Construção :
- indexado pelo tipo como passado ao parâmetro tipo=
- o conteúdo é uma tabela que contém ao menos duas cadeias de texto, a primeira que corresponde à categoria "primária", a segunda à categoria "secundária" (e eventualmente uma terçeira para a categoria "terciária")
- deve ter obrigatóriamente uma entrada para o tipo "padrão" correspondente às cores por padrão
- as entradas devem obrigatóriamente ser em minúsculas. Não faz falta escrever "rugby Seven" mas "rugby seven".
- se um tipo retoma os mesmos valores que outro tipo faz falta substituir a tabela por uma cadeia de texto que contém o nome do tipo etiqueta (ver exemplos)
- esta entrada tem que ter como índice o nome da infobox (como passado ao parâmetro infobox=). Isto pode se fazer de dois modos :
Exemplos
editarNo exemplo aqui mostrado cria-se uma carta para a infobox "biografia" e uma carta para a infobox "testes" :
-- Nota : decidir bem qual o separador dos elementos (a virgula em final de linha).
-- O último elemento pode não ter.
-- uma entrada para a infobox "biografia" na tabela "data"
data["biografia"] = {
-- cria-se uma entrada por "tipo"
-- um entrada "padrão" obrigatório
["padrão"] = { "FFFFFF", "EEEEEE" }, -- uma entrada por categoria (primária, secundária)
-- para compatibilidade aceita-se "default", idêntico
["default"] = "padrão", -- um texto em lugar de uma tabela indica uma "redireccionamento"
-- tipo animação e BD asiática"
["animação e banda desenhada asiática"] = { "80DDBF", "B0FFD0" },
-- versão mais curta
["abda"] = "animação e banda desenhada asiática"
} -- final de "biografia"
-- uma entrada para a infobox "testes" na tabela "data"
data["testes"] = {
-- um entrada "padrão" obrigatória
["padrão"] = { "AACCEE", "EECCAA", "AAEECC" }, -- uma entrada por categoria (primária, secundária, terciária)
-- tipo "tipo1"
["tipo1"] = { "00CCEE", "00CCAA", "00.ºECC" },
-- tipo "tipo2"
["tipo2"] = { "AACC00", "EECC00", "AAEE00" },
} -- final de "testes"
Exemplos de utilização
editar- {{#invoke:Cartas|carta|infobox=testes|tipo=cat1|categoria=primária}} dados « AAAAAA »
- {{#invoke:Cartas|carta|infobox=testes | tipo=cat1|categoria=secundária}} dados « EEEEFF »
- {{#invoke:Cartas|carta|infobox=testes | tipo=cat2|categoria=primária}} dados « 777777 »
- {{#invoke:Cartas|carta|infobox=testes | tipo=cat2|categoria=secundária}} dados « 777700 »
Outra documentação:
--[[
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