Mudanças entre as edições de "Módulo:Skillbox"

De Wiki Gla
Ir para navegação Ir para pesquisar
 
(6 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
local p = {}
local p = {}


-- Lê uma skill formatada com Nome, Descrição, Vídeo
local counter = 0
function parseSkill(text)
    local skill = { nome = '', descricao = '', video = '' }


    for line in mw.text.gsplit(text, '\n', true) do
function p.build(frame)
        local chave, valor = line:match("^%s*(.-)%s*=%s*(.-)%s*$")
    counter = counter + 1
        if chave and valor then
    local args = frame:getParent().args
            chave = mw.text.trim(chave:lower())
    local atributos = { string.format('data-skillbox-id="skillbox%d"', counter) }
            valor = mw.text.trim(valor)
            if chave == "nome" then
                skill.nome = valor
            elseif chave == "descrição" or chave == "descricao" then
                skill.descricao = valor
            elseif chave == "vídeo" or chave == "video" then
                skill.video = valor
            end
        end
    end


     return skill
     for i = 1, 15 do
end
        local hab = args['hab' .. i]
        local de = args['de' .. i]
        local vid = args['vid' .. i]


function p.exibir(frame)
        if hab then
    local args = frame:getParent().args
            table.insert(atributos, string.format('data-hab%d="%s"', i, mw.text.encode(hab)))
    local skills = {}
        end
 
         if de then
    for k, v in pairs(args) do
            table.insert(atributos, string.format('data-de%d="%s"', i, mw.text.encode(de)))
         if type(k) == "string" and k:match("^skill%d*$") and v:find("Nome%s*=") then
            table.insert(skills, parseSkill(v))
         end
         end
    end
        if vid then
 
            table.insert(atributos, string.format('data-vid%d="%s"', i, mw.text.encode(vid)))
    local html = mw.html.create("div")
    html:addClass("skillbox-container")
 
    local tabs = html:tag("div"):addClass("skillbox-tabs")
    local content = html:tag("div"):addClass("skillbox-content")
 
    for i, skill in ipairs(skills) do
        local id = "skill" .. i
 
        tabs:tag("button")
            :addClass("skillbox-tab")
            :addClass(i == 1 and "active" or "")
            :attr("data-target", id)
            :wikitext(skill.nome or ("Skill " .. i))
 
        local panel = content:tag("div")
            :addClass("skillbox-panel")
            :addClass(i == 1 and "active" or "")
            :attr("id", id)
 
        panel:tag("div")
            :addClass("skillbox-desc")
            :wikitext(skill.descricao or "")
 
        if skill.video and skill.video ~= "" then
            local src = mw.text.trim(skill.video)
 
            -- (Opcional) Se quiser forçar .webm como padrão:
            -- if not src:match("%.webm$") and not src:match("%.mp4$") then
            --    src = src .. ".webm"
            -- end
 
            panel:tag("video")
                :addClass("skillbox-video")
                :attr("controls", "true")
                :tag("source")
                :attr("src", "https://wiki.gla.com.br/index.php/Special:FilePath/" .. src)
                :attr("type", "video/mp4")
         end
         end
     end
     end


     return tostring(html)
    local html = string.format('<div class="skillbox-data" style="display:none" %s></div>', table.concat(atributos, ' '))
     return html .. frame:preprocess('{{#widget:Skillbox}}')
end
end


return p
return p

Edição atual tal como às 11h22min de 9 de junho de 2025

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

local p = {}

local counter = 0

function p.build(frame)
    counter = counter + 1
    local args = frame:getParent().args
    local atributos = { string.format('data-skillbox-id="skillbox%d"', counter) }

    for i = 1, 15 do
        local hab = args['hab' .. i]
        local de = args['de' .. i]
        local vid = args['vid' .. i]

        if hab then
            table.insert(atributos, string.format('data-hab%d="%s"', i, mw.text.encode(hab)))
        end
        if de then
            table.insert(atributos, string.format('data-de%d="%s"', i, mw.text.encode(de)))
        end
        if vid then
            table.insert(atributos, string.format('data-vid%d="%s"', i, mw.text.encode(vid)))
        end
    end

    local html = string.format('<div class="skillbox-data" style="display:none" %s></div>', table.concat(atributos, ' '))
    return html .. frame:preprocess('{{#widget:Skillbox}}')
end

return p