Módulo:CharacterInfobox: mudanças entre as edições

De Cronicas Eternas Wiki
Sem resumo de edição
Sem resumo de edição
 
(4 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
local p = {}
local p = {}
-- Lista de valores que indicam ausência de informação
local ignoredValues = {
    ["Unknown"] = true,
    ["None"] = true,
    ["Nenhum"] = true,
    ["-"] = true
}


function p.infobox(frame)
function p.infobox(frame)
Linha 5: Linha 13:


     local sections = {
     local sections = {
         ["INFORMAÇÕES BÁSICAS"] = {
         {
            {"Títulos", args["titles"]},
            title = "INFORMAÇÕES BÁSICAS",
            {"Conhecido como", args["known_as"]},
            fields = {
            {"Apelidos", args["nicknames"]},
                {"Títulos", args["titles"]},
            {"Nome verdadeiro", args["real_name"]},
                {"Conhecido como", args["known_as"]},
            {"Lar", args["home"]},
                {"Apelidos", args["nicknames"]},
            {"Lares anteriores", args["previous_homes"]},
                {"Nome verdadeiro", args["real_name"]},
            {"Sexo", args["gender"]},
                {"Lar", args["home"]},
            {"Espécie", args["species"]},
                {"Lares anteriores", args["previous_homes"]},
            {"Etnia", args["ethnicity"]},
                {"Sexo", args["gender"]},
            {"Ocupação", args["occupation"]},
                {"Espécie", args["species"]},
            {"Idade", args["age"]},
                {"Etnia", args["ethnicity"]},
            {"Divindade Padroeira", args["patron_deity"]},
                {"Ocupação", args["occupation"]},
            {"Linguagens", args["languages"]},
                {"Idade", args["age"]},
                {"Divindade Padroeira", args["patron_deity"]},
                {"Linguagens", args["languages"]},
            },
         },
         },
         ["DATAS"] = {
         {
            {"Nascido", args["born"]},
            title = "DATAS",
            {"Transformado", args["transformed"]},
            fields = {
            {"Morte", args["death"]},
                {"Nascido", args["born"]},
            {"Destruído", args["destroyed"]},
                {"Transformado", args["transformed"]},
                {"Morte", args["death"]},
                {"Destruído", args["destroyed"]},
            },
         },
         },
         ["FAMÍLIA"] = {
         {
            {"Pais", args["parents"]},
            title = "FAMÍLIA",
            {"Irmãos", args["siblings"]},
            fields = {
            {"Filhos", args["children"]},
                {"Pais", args["parents"]},
            {"Parentes", args["relatives"]},
                {"Irmãos", args["siblings"]},
                {"Filhos", args["children"]},
                {"Parentes", args["relatives"]},
            },
         },
         },
         ["DINASTIA"] = {
         {
            {"Início de reinado", args["reign_start"]},
            title = "DINASTIA",
            {"Fim de reinado", args["reign_end"]},
            fields = {
            {"Predecessor", args["predecessor"]},
                {"Início de reinado", args["reign_start"]},
            {"Sucessor", args["successor"]},
                {"Fim de reinado", args["reign_end"]},
                {"Predecessor", args["predecessor"]},
                {"Sucessor", args["successor"]},
            },
         },
         },
         ["INFORMAÇÕES MECÂNICAS"] = {
         {
            {"Alinhamento", args["alignment"]},
            title = "INFORMAÇÕES MECÂNICAS",
            {"Nível de desafio", args["challenge_rating"]},
            fields = {
            {"Classe", args["class"]},
                {"Alinhamento", args["alignment"]},
                {"Nível de desafio", args["challenge_rating"]},
                {"Classe", args["class"]},
            },
         },
         },
     }
     }
Linha 63: Linha 86:


     -- Adiciona as seções e os campos
     -- Adiciona as seções e os campos
     for section, fields in pairs(sections) do
     for _, section in ipairs(sections) do
         if #fields > 0 then
         local sectionContent = {}
            infobox = infobox .. string.format('<div style="text-align:center; background:#ddd; font-size:110%%; padding:4px; margin-top:5px;">%s</div>', section)
 
            for _, field in ipairs(fields) do
        -- Monta os campos com conteúdo da seção
                local label, value = field[1], field[2]
        for _, field in ipairs(section.fields) do
                if value and value ~= "" then
            local label, value = field[1], field[2]
                    infobox = infobox .. string.format('<div style="padding:2px 5px;"><strong>%s:</strong> %s</div>', label, value)
            if value and value ~= "" and not ignoredValues[value] then
                end
                table.insert(sectionContent, string.format('<div style="padding:2px 5px;"><strong>%s:</strong> %s</div>', label, value))
             end
             end
        end
        -- Adiciona a seção somente se tiver conteúdo
        if #sectionContent > 0 then
            infobox = infobox .. string.format('<div style="text-align:center; background:#ddd; font-size:110%%; padding:4px; margin-top:5px;">%s</div>', section.title)
            infobox = infobox .. table.concat(sectionContent)
         end
         end
     end
     end

Edição atual tal como às 00h05min de 24 de novembro de 2024

A documentação para este módulo pode ser criada em Módulo:CharacterInfobox/doc

local p = {}

-- Lista de valores que indicam ausência de informação
local ignoredValues = {
    ["Unknown"] = true,
    ["None"] = true,
    ["Nenhum"] = true,
    ["-"] = true
}

function p.infobox(frame)
    local args = frame:getParent().args

    local sections = {
        {
            title = "INFORMAÇÕES BÁSICAS",
            fields = {
                {"Títulos", args["titles"]},
                {"Conhecido como", args["known_as"]},
                {"Apelidos", args["nicknames"]},
                {"Nome verdadeiro", args["real_name"]},
                {"Lar", args["home"]},
                {"Lares anteriores", args["previous_homes"]},
                {"Sexo", args["gender"]},
                {"Espécie", args["species"]},
                {"Etnia", args["ethnicity"]},
                {"Ocupação", args["occupation"]},
                {"Idade", args["age"]},
                {"Divindade Padroeira", args["patron_deity"]},
                {"Linguagens", args["languages"]},
            },
        },
        {
            title = "DATAS",
            fields = {
                {"Nascido", args["born"]},
                {"Transformado", args["transformed"]},
                {"Morte", args["death"]},
                {"Destruído", args["destroyed"]},
            },
        },
        {
            title = "FAMÍLIA",
            fields = {
                {"Pais", args["parents"]},
                {"Irmãos", args["siblings"]},
                {"Filhos", args["children"]},
                {"Parentes", args["relatives"]},
            },
        },
        {
            title = "DINASTIA",
            fields = {
                {"Início de reinado", args["reign_start"]},
                {"Fim de reinado", args["reign_end"]},
                {"Predecessor", args["predecessor"]},
                {"Sucessor", args["successor"]},
            },
        },
        {
            title = "INFORMAÇÕES MECÂNICAS",
            fields = {
                {"Alinhamento", args["alignment"]},
                {"Nível de desafio", args["challenge_rating"]},
                {"Classe", args["class"]},
            },
        },
    }

    -- Início da infobox
    local infobox = '<div style="width:22em; background:#f9f9f9; border:1px solid #aaa; float:right; padding:5px; font-size:90%;">'

    -- Adiciona a imagem no topo, se fornecida
    if args["image"] and args["image"] ~= "" then
        infobox = infobox .. string.format(
            '<div style="text-align:center; margin-bottom:10px;">%s</div>',
            frame:preprocess(string.format('[[File:%s|center|frameless|200px]]', args["image"]))
        )
    end

    -- Adiciona o nome do personagem
    infobox = infobox .. string.format(
        '<div style="text-align:center; background:#ccc; font-size:120%%; padding:4px;">%s</div>',
        args["name"] or "NOME DO PERSONAGEM"
    )

    -- Adiciona as seções e os campos
    for _, section in ipairs(sections) do
        local sectionContent = {}

        -- Monta os campos com conteúdo da seção
        for _, field in ipairs(section.fields) do
            local label, value = field[1], field[2]
            if value and value ~= "" and not ignoredValues[value] then
                table.insert(sectionContent, string.format('<div style="padding:2px 5px;"><strong>%s:</strong> %s</div>', label, value))
            end
        end

        -- Adiciona a seção somente se tiver conteúdo
        if #sectionContent > 0 then
            infobox = infobox .. string.format('<div style="text-align:center; background:#ddd; font-size:110%%; padding:4px; margin-top:5px;">%s</div>', section.title)
            infobox = infobox .. table.concat(sectionContent)
        end
    end

    infobox = infobox .. '</div>'

    return infobox
end

return p