Módulo:Ferramentas

Origem: IRChelp Brasil - Wiki
Revisão de 12h20min de 21 de dezembro de 2019 por Campari (discussão | contribs) (Criação do Módulo Ferramentas.)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar


Descrição

Este módulo tem funções auxiliares para criar infocaixas.

Uso

Outra documentação:


local Utilidades = { }


--[[
    trim limpa um parâmetro sem nome (remove espaços iniciais e finais e retorna no início e no final)
retorna nil se o texto estiver vazio ou não for texto. Números não são considerados
como texto.
]]
function Utilidades.trim( texto )
    if type( texto ) == 'string' and texto ~= '' then
        texto = texto:gsub( '^%s*(%S?.-)%s*$', '%1' )
        if texto ~= '' then
            return texto
        end
    end
    return nil
end


--[[
    validTextArg retorna o primeiro parâmetro de string não vazio
    Parâmetro :
        1 - tabela contendo todos os parâmetros
        2, ... - os nomes dos parâmetros que devem ser testados.
]]
function Utilidades.validTextArg( args, name, ... )
    local texto = Utilidades.trim( args[name] )
    if texto then
        return texto
    end
    if select( '#', ... ) > 0 then
        return Utilidades.validTextArg( args, ... )
    end
    return nil
end


--[[
    notEmpty retorna o primeiro parâmetro não vazio ou nulo.
    Parâmetro :
        1, ... - os nomes dos parâmetros que devem ser testados.
]]
function Utilidades.notEmpty( var, ... )
    local texto = Utilidades.trim( var )
    if texto then
        return texto
    end

    local tvar = type( var )
    
    if tvar == 'table' then
        local nextFunc = pairs( var )   -- não use próximo car porque não está definido em par mw.loadData
        if nextFunc( var ) ~= nil then
            return var
        end
    elseif var == true or ( tvar == 'number' and var ~= 0 ) or tvar == 'function' then
        return var
    end
    
    if select( '#', ... ) > 0 then
        return Utilidades.notEmpty(  ... )
    end
end


--[[
    extractArgs recupera os argumentos do modelo, ou a tabela
    passada para a função por outra função de um módulo,
    Parâmetro :
        1 - um objeto de quadro ou uma tabela contendo os parâmetros
        2, ...  - uma lista de nomes de parâmetros para determinar se os parâmetros são passados
        por #invoke. O primeiro parâmetro do frame será sistematicamente testado.
]]
function Utilidades.extractArgs ( frame, ... )
    if type( frame ) == 'table' then
        if type( frame.getParent ) == 'function' then
            if Utilidades.notEmpty( frame.args.invokeArgsOnly ) then
                return frame.args
            else
                local args = frame:getParent().args;
                for k,v in pairs( frame.args ) do
                    args[k] = v;
                end
                return args
            end
        else
            return frame
        end
    else
        return { frame, ... }
    end
end


return Utilidades