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

De Wiki Gla
Ir para navegação Ir para pesquisar
(Limpou toda a página)
Etiqueta: anulando
Linha 1: Linha 1:
local p = {}


function p.renderPersona(frame)
    local args = frame.args
    -- Datos básicos
    local data = {
        nome = args.nome or '',
        tier = args.tier or '',
        classe = args.classe or '',
        image = args.image or '',
        habilidades = {},
        skins = {}
    }
   
    -- Procesar habilidades (hasta 21)
    for i = 1, 21 do
        if args['hab' .. i .. '-nome'] then
            data.habilidades[i] = {
                nome = args['hab' .. i .. '-nome'] or '',
                icon = args['hab' .. i .. '-icon'] or '',
                iconSize = args['hab' .. i .. '-icon-size'] or '50px',
                level = args['hab' .. i .. '-level'] or '',
                desc = args['hab' .. i .. '-desc'] or '',
                atr = args['hab' .. i .. '-atr'] or '',
                video = args['hab' .. i .. '-video'] or ''
            }
        end
    end
   
    -- Procesar skins (hasta 11)
    for i = 1, 11 do
        if args['skin' .. i .. '-image'] then
            data.skins[i] = {
                image = args['skin' .. i .. '-image'] or '',
                tooltip = args['skin' .. i .. '-tooltip'] or ''
            }
        end
    end
   
    -- Generar HTML
    local html = require('mw.html')
    local container = html.create('div'):addClass('persona-container')
   
    -- Imagen principal
    if data.image ~= '' then
        container:tag('div')
            :addClass('character-img')
            :wikitext(string.format('[[File:%s|200px|link=]]', data.image))
    end
   
    -- Título
    container:tag('h2')
        :wikitext(string.format('%s é um personagem do tier %s.', data.nome, data.tier))
   
    -- Pestañas
    local tabs = container:tag('div'):addClass('tabs')
    tabs:tag('button'):addClass('tab'):attr('data-target', 'habilidades'):wikitext('Habilidades')
    tabs:tag('button'):addClass('tab'):attr('data-target', 'skins'):wikitext('Skins')
   
    -- Habilidades
    local habContainer = container:tag('div'):addClass('tab-content habilidades')
    for _, hab in ipairs(data.habilidades) do
        local habDiv = habContainer:tag('div'):addClass('hab-item')
        if hab.icon ~= '' then
            habDiv:tag('img')
                :addClass('hab-icon')
                :attr('data-src', string.format('[[File:%s|%s|link=]]', hab.icon, hab.iconSize))
                :attr('alt', hab.nome)
                :attr('loading', 'lazy')
        end
        habDiv:tag('span'):wikitext(hab.nome)
        habDiv:tag('p'):wikitext(hab.desc)
    end
   
    -- Skins
    local skinContainer = container:tag('div'):addClass('tab-content skins'):css('display', 'none')
    for _, skin in ipairs(data.skins) do
        local skinDiv = skinContainer:tag('div'):addClass('skin-item')
        if skin.image ~= '' then
            skinDiv:tag('img')
                :addClass('skin-img')
                :attr('data-src', string.format('[[File:%s|100px|link=]]', skin.image))
                :attr('alt', skin.tooltip)
                :attr('loading', 'lazy')
        end
        skinDiv:tag('span'):wikitext(skin.tooltip)
    end
   
    -- Devolver HTML y cargar widget para interacciones
    return tostring(container) .. '{{#widget:Droflax}}'
end
return p

Edição das 23h37min de 19 de julho de 2025

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

local p = {}

function p.renderPersona(frame)
    local args = frame.args
    -- Datos básicos
    local data = {
        nome = args.nome or '',
        tier = args.tier or '',
        classe = args.classe or '',
        image = args.image or '',
        habilidades = {},
        skins = {}
    }
    
    -- Procesar habilidades (hasta 21)
    for i = 1, 21 do
        if args['hab' .. i .. '-nome'] then
            data.habilidades[i] = {
                nome = args['hab' .. i .. '-nome'] or '',
                icon = args['hab' .. i .. '-icon'] or '',
                iconSize = args['hab' .. i .. '-icon-size'] or '50px',
                level = args['hab' .. i .. '-level'] or '',
                desc = args['hab' .. i .. '-desc'] or '',
                atr = args['hab' .. i .. '-atr'] or '',
                video = args['hab' .. i .. '-video'] or ''
            }
        end
    end
    
    -- Procesar skins (hasta 11)
    for i = 1, 11 do
        if args['skin' .. i .. '-image'] then
            data.skins[i] = {
                image = args['skin' .. i .. '-image'] or '',
                tooltip = args['skin' .. i .. '-tooltip'] or ''
            }
        end
    end
    
    -- Generar HTML
    local html = require('mw.html')
    local container = html.create('div'):addClass('persona-container')
    
    -- Imagen principal
    if data.image ~= '' then
        container:tag('div')
            :addClass('character-img')
            :wikitext(string.format('[[File:%s|200px|link=]]', data.image))
    end
    
    -- Título
    container:tag('h2')
        :wikitext(string.format('%s é um personagem do tier %s.', data.nome, data.tier))
    
    -- Pestañas
    local tabs = container:tag('div'):addClass('tabs')
    tabs:tag('button'):addClass('tab'):attr('data-target', 'habilidades'):wikitext('Habilidades')
    tabs:tag('button'):addClass('tab'):attr('data-target', 'skins'):wikitext('Skins')
    
    -- Habilidades
    local habContainer = container:tag('div'):addClass('tab-content habilidades')
    for _, hab in ipairs(data.habilidades) do
        local habDiv = habContainer:tag('div'):addClass('hab-item')
        if hab.icon ~= '' then
            habDiv:tag('img')
                :addClass('hab-icon')
                :attr('data-src', string.format('[[File:%s|%s|link=]]', hab.icon, hab.iconSize))
                :attr('alt', hab.nome)
                :attr('loading', 'lazy')
        end
        habDiv:tag('span'):wikitext(hab.nome)
        habDiv:tag('p'):wikitext(hab.desc)
    end
    
    -- Skins
    local skinContainer = container:tag('div'):addClass('tab-content skins'):css('display', 'none')
    for _, skin in ipairs(data.skins) do
        local skinDiv = skinContainer:tag('div'):addClass('skin-item')
        if skin.image ~= '' then
            skinDiv:tag('img')
                :addClass('skin-img')
                :attr('data-src', string.format('[[File:%s|100px|link=]]', skin.image))
                :attr('alt', skin.tooltip)
                :attr('loading', 'lazy')
        end
        skinDiv:tag('span'):wikitext(skin.tooltip)
    end
    
    -- Devolver HTML y cargar widget para interacciones
    return tostring(container) .. '{{#widget:Droflax}}'
end

return p