Módulo:ProcessArgs

De Minecraft Wiki
Ir para: navegação, pesquisa

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