Módulo:Ferramentas
Ir para navegação
Ir para pesquisar
40x40px | This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing. |
40x40px | Este módulo é usado em mais de 600 000 páginas. (Ver Wikihelp: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. |
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