Módulo:Ferramentas
Revisão de 20h12min de 15 de fevereiro de 2020 por br>Dbastro (extract args com função Lua table)
<section begin=header />
Este módulo está na categoria sujeitos a proteção de página. Ele é um módulo de alta visibilidade em uso por um grande número de páginas, ou é transcluído muito frequentemente. Por causa do vandalismo ou erros que podem afectar muitas páginas, e mesmo edições triviais podem causar cargas substanciais nos servidores, ele está protegido de editar. |
Este módulo é usado em mais de 600 000 páginas. (Ver Wikipedia:Predefinições em alto risco) Para evitar sobrecargas desnecessárias ao servidor e outros transtornos, quaisquer mudanças devem ser previamente testadas, seja na predefinição de testes ou em Módulo:Ferramentas/Testes (ou ainda em sua página de testes). Por favor, sempre considere expor eventuais mudanças na página de discussão, antes de implementá-las. |
<section end=header />
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.getParent ) == 'function' then local args = frame:getParent().args for k,v in pairs( frame.args ) do args[k] = v; end return args else return frame end end return Utilidades