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

De Wiki Gla
Ir para navegação Ir para pesquisar
(Criou página com 'local p = {} function p.render(frame) local args = frame:getParent().args local nome = mw.text.trim(args['nome'] or '') local root = mw.html.create('div'):attr('...')
 
 
(4 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
local p = {}
local p = {}


function p.render(frame)
function p.main(frame)
     local args = frame:getParent().args
     local args = frame:getParent().args
     local nome = mw.text.trim(args['nome'] or '')
     local titulo = mw.text.trim(args['titulo'] or '')


     local root = mw.html.create('div'):attr('class', 'sv-wrap')
     local bosses = {}
 
    -- botão de tema
    root:tag('span'):attr('class', 'tema-btn'):wikitext('☾ Dark')
 
    -- título
    if nome ~= '' then
        root:tag('div'):attr('class', 'sv-titulo'):wikitext(nome)
    end
 
    -- coleta skills
    local skills = {}
     local i = 1
     local i = 1
     while true do
     while true do
         local titulo = mw.text.trim(args['skill' .. i .. 'titulo'] or '')
         local nome = mw.text.trim(args['boss' .. i .. 'nome'] or '')
         if titulo == '' then break end
         if nome == '' then break end
        skills[#skills + 1] = i
        i = i + 1
    end


    if #skills == 0 then return tostring(root) end
        local boss = {
            nome = nome,
            elite = {},
            hard = {}
        }


    -- container principal
        -- Skills Elite
    local box = root:tag('div'):attr('class', 'sv-box')
        local j = 1
 
        while j <= 8 do
    -- barra de tabs
            local sNome = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'nome'] or '')
    local tabbar = box:tag('div'):attr('class', 'sv-tabs')
            if sNome == '' then break end
    for idx, n in ipairs(skills) do
             table.insert(boss.elite, {
        local img = mw.text.trim(args['skill' .. n .. 'img'] or '')
                nome  = sNome,
        local tab = tabbar:tag('span')
                video = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'video'] or ''),
             :attr('class', idx == 1 and 'sv-tab active' or 'sv-tab')
                desc  = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'desc'] or '')
            :attr('data-skill', tostring(n))
            })
        if img ~= '' then
             j = j + 1
            tab:node(mw.html.create(''):wikitext('[[File:' .. img .. '|32px|link=]]'))
        else
             tab:wikitext(tostring(n))
         end
         end
    end


    -- painéis de cada skill
        -- Skills Hard
    for idx, n in ipairs(skills) do
        j = 1
         local px      = 'skill' .. n
         while j <= 8 do
        local titulo  = mw.text.trim(args[px .. 'titulo']  or '')
            local sNome = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'nome'] or '')
        local youtube = mw.text.trim(args[px .. 'youtube'] or '')
             if sNome == '' then break end
        local video  = mw.text.trim(args[px .. 'video']   or '')
             table.insert(boss.hard, {
 
                nome  = sNome,
        local panel = box:tag('div')
                video = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'video'] or ''),
             :attr('class', idx == 1 and 'sv-panel active' or 'sv-panel')
                desc = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'desc'] or '')
             :attr('data-panel', tostring(n))
             })
 
        -- título da skill
        panel:tag('h2'):attr('class', 'sv-skill-titulo'):wikitext(titulo)
 
        -- descrições
        local descsec = panel:tag('div'):attr('class', 'sv-desc')
        local j = 1
        while true do
            local desc = mw.text.trim(args[px .. 'desc' .. j] or '')
             if desc == '' then break end
            descsec:tag('p'):wikitext(desc)
             j = j + 1
             j = j + 1
         end
         end


         -- mídia
         table.insert(bosses, boss)
        if youtube ~= '' then
         i = i + 1
            local media = panel:tag('div'):attr('class', 'sv-media')
            media:attr('data-youtube', youtube)
         elseif video ~= '' then
            local media = panel:tag('div'):attr('class', 'sv-media')
            local url = mw.title.new('Especial:FilePath/' .. video)
            media:tag('video')
                :attr('src', tostring(url))
                :attr('controls', '')
                :attr('loop', '')
                :attr('muted', '')
                :wikitext('')
        end
     end
     end


     return tostring(root)
    local json = mw.text.jsonEncode(bosses)
 
    local container = mw.html.create('div')
        :addClass('ba-wrap')
        :addClass('dark')
        :attr('id', 'ba-wrap')
        :attr('data-bosses', json)
        :attr('data-titulo', titulo)
 
     return tostring(container)
end
end


return p
return p

Edição atual tal como às 13h22min de 17 de março de 2026

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

local p = {}

function p.main(frame)
    local args = frame:getParent().args
    local titulo = mw.text.trim(args['titulo'] or '')

    local bosses = {}
    local i = 1
    while true do
        local nome = mw.text.trim(args['boss' .. i .. 'nome'] or '')
        if nome == '' then break end

        local boss = {
            nome = nome,
            elite = {},
            hard = {}
        }

        -- Skills Elite
        local j = 1
        while j <= 8 do
            local sNome = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'nome'] or '')
            if sNome == '' then break end
            table.insert(boss.elite, {
                nome  = sNome,
                video = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'video'] or ''),
                desc  = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'desc'] or '')
            })
            j = j + 1
        end

        -- Skills Hard
        j = 1
        while j <= 8 do
            local sNome = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'nome'] or '')
            if sNome == '' then break end
            table.insert(boss.hard, {
                nome  = sNome,
                video = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'video'] or ''),
                desc  = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'desc'] or '')
            })
            j = j + 1
        end

        table.insert(bosses, boss)
        i = i + 1
    end

    local json = mw.text.jsonEncode(bosses)

    local container = mw.html.create('div')
        :addClass('ba-wrap')
        :addClass('dark')
        :attr('id', 'ba-wrap')
        :attr('data-bosses', json)
        :attr('data-titulo', titulo)

    return tostring(container)
end

return p