Módulo:ProcessArgs

De WikiMinecraft
Saltar a: navegación, buscar

Esta es la página de documentación, debería ser transcluida a la página de plantilla principal. Véase Plantilla:Documentation para más información.

Este módulo permite a los argumentos su fusionado y normalizado. Esto también tiene el efecto secundario de hacer que los argumentos de una tabla real, en lugar de una tabla vacía con un metatabla para acceder a los argumentos. Esto permite que el operador # trabaje, así como permite añadir nuevos valores a la tabla, sin ser ignorados cuando se repiten.

La función norm normalizará los argumentos que se le pasan, recortará los espacios en blanco y establecerá los argumentos vacíos para nil. Si una tabla no se pasa a la función, se obtendrá automáticamente la tabla de argumentos de los padres de la trama actual.

La función merge fusionará dos tablas, sobrescribiendo valores duplicados de la segunda tabla con el valor de la primera tabla, así como hará lo mismo que la función norm si el parámetro norm es true. Si el primer parámetro no es una tabla, se utiliza como valor para el parámetro norm, y ​​se obtendrá automáticamente la tabla de argumentos pasando directamente de la trama actual y fusionandose con la tabla de argumentos de los padres de la trama actual.




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 norm and v ~= '' then
			args[k] = v
		end
	end
	
	for k, v in pairs( parentArgs ) do
		v = mw.text.trim( v )
		if ( not norm or norm and v ~= '' ) and not args[k] then
			args[k] = v
		end
	end
	
	return args
end
return p