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

De Cronicas Eternas Wiki
Sem resumo de edição
Sem resumo de edição
Linha 52: Linha 52:
     end
     end


        -- Adiciona a imagem no final, se fornecida
            -- Adiciona a imagem no final, se fornecida
     if args["image"] and args["image"] ~= "" then
     if args["image"] and args["image"] ~= "" then
         infobox = infobox .. frame:preprocess(string.format(
         infobox = infobox .. mw.html.create('div')
             '<div style="text-align:center; margin-top:10px;">' ..
            :addClass('species-image')
            '<img src="%s" alt="%s" style="max-width:100%%; height:auto; border:1px solid #ccc; padding:4px;" />' ..
             :css('text-align', 'center')
            '</div>',
            :css('margin-top', '10px')
             args["image"],
            :node(mw.html.create('img')
             args["name"] or "Imagem da Espécie"
                :attr('src', args["image"])
        ))
                :attr('alt', args["name"] or "Imagem da Espécie")
                :css('max-width', '100%')
                :css('height', 'auto')
                :css('border', '1px solid #ccc')
                :css('padding', '4px')
             )
             :allDone()
     end
     end





Edição das 21h58min de 22 de novembro de 2024

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

local p = {}

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

    local sections = {
        ["INFORMAÇÃO BÁSICA"] = {
            {"Nome", args["name"]},
            {"Tamanho", args["size"]},
            {"Tipo", args["type"]},
            {"Subtipo", args["subtype"]},
            {"Alinhamento", args["alignment"]},
            {"Nível de Desafio", args["challenge_rating"]},
            {"Divindade Padroeira", args["patron_deity"]},
            {"Movimento", args["movement"]},
            {"Visão", args["vision"]},
            {"Ciclo Ativo", args["active_cycle"]},
            {"Dieta", args["diet"]},
            {"Tempo de Vida", args["lifespan"]},
            {"Localidade", args["locality"]},
            {"Linguagens", args["languages"]},
            {"Subespécies", args["subspecies"]},
            {"Clima", args["climate"]},
            {"Terreno", args["terrain"]},
        },
        ["APARÊNCIA"] = {
            {"Altura", args["height"]},
            {"Comprimento", args["length"]},
            {"Envergadura da Asa", args["wingspan"]},
            {"Peso", args["weight"]},
            {"Cor da Pele", args["skin_color"]},
            {"Cor do Cabelo", args["hair_color"]},
            {"Tipo de Cabelo", args["hair_type"]},
            {"Penas", args["feathers"]},
            {"Cor de Olho", args["eye_color"]},
            {"Tipo Corporal", args["body_type"]},
        },
    }

    -- Construção da Infobox
    local infobox = string.format('<div style="width:22em; background:#f9f9f9; border:1px solid #aaa; float:right; padding:5px; font-size:90%%;">' ..
        '<div style="text-align:center; background:#ccc; font-size:120%%; padding:4px;">%s</div>', args["name"] or "NOME DA ESPÉCIE")

    for section, fields in pairs(sections) do
        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
            local label, value = field[1], field[2]
            if value and value ~= "" then
                infobox = infobox .. string.format('<div style="padding:2px 5px;"><strong>%s:</strong> %s</div>', label, value)
            end
        end
    end

            -- Adiciona a imagem no final, se fornecida
    if args["image"] and args["image"] ~= "" then
        infobox = infobox .. mw.html.create('div')
            :addClass('species-image')
            :css('text-align', 'center')
            :css('margin-top', '10px')
            :node(mw.html.create('img')
                :attr('src', args["image"])
                :attr('alt', args["name"] or "Imagem da Espécie")
                :css('max-width', '100%')
                :css('height', 'auto')
                :css('border', '1px solid #ccc')
                :css('padding', '4px')
            )
            :allDone()
    end



    infobox = infobox .. '</div>'

    return infobox
end

return p