Módulo:Ferramentas
Ir para navegação
Ir para pesquisar
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. |
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