Minecraft Wiki
Sem resumo de edição
Sem resumo de edição
 
Linha 27: Linha 27:
 
for k, v in pairs( origArgs ) do
 
for k, v in pairs( origArgs ) do
 
v = mw.text.trim( tostring( v ) )
 
v = mw.text.trim( tostring( v ) )
if not norm or norm and v ~= '' then
+
if not norm or v ~= '' then
 
args[k] = v
 
args[k] = v
 
end
 
end
Linha 34: Linha 34:
 
for k, v in pairs( parentArgs ) do
 
for k, v in pairs( parentArgs ) do
 
v = mw.text.trim( v )
 
v = mw.text.trim( v )
if not norm or norm and v ~= '' then
+
if not norm or v ~= '' then
 
args[k] = v
 
args[k] = v
 
end
 
end

Edição atual tal como às 16h29min de 7 de julho de 2020

Este módulo permite que os argumentos sejam fundidos e normalizados. Isso também tem o efeito colateral de tornar os argumentos uma tabela real em vez de uma tabela vazia com um metatable para acessar os args. Isso permite que o operador # trabalhe, além de permitir que novos valores sejam adicionados à tabela, sem serem ignorados ao iterar.

A função norm irá normalizar os argumentos passados para ela, aparar espaços em branco e definir argumentos vazios para nil. Se uma tabela não for passada pela função, ela obterá automaticamente a tabela de argumentos pai atual da tabela.

A função merge irá juntar duas tabelas, sobrescrevendo valores duplicados da segunda tabela com o valor da primeira tabela, bem como fazer o mesmo que a função norm Se o parâmetro norm for true. Se o primeiro parâmetro não for uma tabela, ele será usado como o valor para o parâmetro de norm, e ele automaticamente obterá a tabela de argumentos passados diretamente da tabela atual e mesclá-lo-á com a tabela de argumentos pai da tabela atual.

[ver | editar | histórico | purgar]A documentação acima é transcluída de Módulo:ProcessArgs/doc.
local p = {}
function p.norm( origArgs )
	if type( origArgs ) ~= 'table' then
		origArgs = mw.getCurrentFrame():getParent().args
	end
	local args = {}
	
	for k, v in pairs( origArgs ) do
		v = mw.text.trim( tostring( v ) )
		if v ~= '' then
			args[k] = v
		end
	end
	
	return args
end

function p.merge( origArgs, parentArgs, norm )
	if type( origArgs ) ~= 'table' then
		norm = origArgs
		local f = mw.getCurrentFrame()
		origArgs = f.args
		parentArgs = f:getParent().args
	end
	local args = {}
	
	for k, v in pairs( origArgs ) do
		v = mw.text.trim( tostring( v ) )
		if not norm or v ~= '' then
			args[k] = v
		end
	end
	
	for k, v in pairs( parentArgs ) do
		v = mw.text.trim( v )
		if not norm or v ~= '' then
			args[k] = v
		end
	end
	
	return args
end
return p