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

Origem: IRChelp Brasil - Wiki
Ir para navegação Ir para pesquisar
(Criação do Módulo Ferramentas.)
 
(Sem diferença)

Edição atual tal como às 13h20min de 21 de dezembro de 2019


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