<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.museo8bits.com/wiki/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AArgumentos</id>
	<title>Módulo:Argumentos - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.museo8bits.com/wiki/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AArgumentos"/>
	<link rel="alternate" type="text/html" href="https://www.museo8bits.com/wiki/index.php?title=M%C3%B3dulo:Argumentos&amp;action=history"/>
	<updated>2026-05-13T23:33:54Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://www.museo8bits.com/wiki/index.php?title=M%C3%B3dulo:Argumentos&amp;diff=7563&amp;oldid=prev</id>
		<title>Museo8bits: Página creada con «local z = {}  function z.obtenerArgumentos(frame) 	if frame.args[1] then  		return frame.args 	end  	return frame:getParent().args end  function z.obtenerArgumentosConValor…»</title>
		<link rel="alternate" type="text/html" href="https://www.museo8bits.com/wiki/index.php?title=M%C3%B3dulo:Argumentos&amp;diff=7563&amp;oldid=prev"/>
		<updated>2021-10-24T12:21:38Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «local z = {}  function z.obtenerArgumentos(frame) 	if frame.args[1] then  		return frame.args 	end  	return frame:getParent().args end  function z.obtenerArgumentosConValor…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local z = {}&lt;br /&gt;
&lt;br /&gt;
function z.obtenerArgumentos(frame)&lt;br /&gt;
	if frame.args[1] then &lt;br /&gt;
		return frame.args&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return frame:getParent().args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function z.obtenerArgumentosConValor(frame)&lt;br /&gt;
	if frame == mw.getCurrentFrame() then&lt;br /&gt;
		argumentos = frame:getParent().args&lt;br /&gt;
	else&lt;br /&gt;
		argumentos = frame.args or frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return require(&amp;#039;Módulo:Tablas&amp;#039;).copiarElementosConValor(argumentos)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Obtiene los argumentos con valores de la plantilla en minúsculas y con las&lt;br /&gt;
-- tildes removidas, en caso de que las tenga de forma que sea más sencillo&lt;br /&gt;
-- trabajar con las distintas variantes en los módulos.&lt;br /&gt;
-- &lt;br /&gt;
-- Nota: En caso de que haya parámetros duplicados tras la normalización solo&lt;br /&gt;
-- se mantendrá el último valor procesado por la función.&lt;br /&gt;
--&lt;br /&gt;
-- Parámetros de entrada:&lt;br /&gt;
--    frame: El marco utilizado por el módulo&lt;br /&gt;
--&lt;br /&gt;
-- Parámetros de salida:&lt;br /&gt;
--    argumentosNormalizados: los argumentos con valor y nombre normalizado&lt;br /&gt;
--    argumentosDuplicados: si la plantilla tiene varias veces el mismo &lt;br /&gt;
--        argumento tras la normalización o no&lt;br /&gt;
function z.obtenerArgumentosConValorNormalizados(frame)&lt;br /&gt;
	local argumentos = z.obtenerArgumentosConValor(frame)&lt;br /&gt;
	local argumentosNormalizados = {}&lt;br /&gt;
	local nombreNormalizado&lt;br /&gt;
	local argumentosDuplicados = false&lt;br /&gt;
	&lt;br /&gt;
	for nombre, valor in pairs(argumentos) do&lt;br /&gt;
		&lt;br /&gt;
		nombreNormalizado = nombre&lt;br /&gt;
		&lt;br /&gt;
		nombreNormalizado = mw.ustring.lower( nombreNormalizado )&lt;br /&gt;
		nombreNormalizado = string.gsub(nombreNormalizado, &amp;quot;[á]&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;
		nombreNormalizado = string.gsub(nombreNormalizado, &amp;quot;[é]&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;
		nombreNormalizado = string.gsub(nombreNormalizado, &amp;quot;[í]&amp;quot;, &amp;quot;i&amp;quot;)&lt;br /&gt;
		nombreNormalizado = string.gsub(nombreNormalizado, &amp;quot;[ó]&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;
		nombreNormalizado = string.gsub(nombreNormalizado, &amp;quot;[úü]&amp;quot;, &amp;quot;u&amp;quot;)&lt;br /&gt;
		&lt;br /&gt;
		if argumentosNormalizados[nombreNormalizado] then&lt;br /&gt;
			argumentosDuplicados = true&lt;br /&gt;
		end&lt;br /&gt;
		argumentosNormalizados[nombreNormalizado] = valor&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return argumentosNormalizados, argumentosDuplicados&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	@name	obtenerTablaDeArgumentos&lt;br /&gt;
	@global	args&lt;br /&gt;
	@param	frame&lt;br /&gt;
	@return	table&lt;br /&gt;
	@descr	Obtiene una tabla de argumentos tomando los parámetros recibidos&lt;br /&gt;
			tando desde la plantilla como desde la invocación de un módulo.&lt;br /&gt;
			En caso de duplicado tiene preferencia el valor de la invocación.&lt;br /&gt;
			Por ejemplo:&lt;br /&gt;
				con la plantilla:	{{Plantilla |campo=valor |key=clave }}&lt;br /&gt;
				y la invocación:	{{#invoke:Módulo |key=value }}&lt;br /&gt;
				se obtiene:			{ [&amp;#039;campo&amp;#039;] = &amp;#039;valor&amp;#039;, [&amp;#039;key&amp;#039;] = &amp;#039;value&amp;#039; }&lt;br /&gt;
--]]&lt;br /&gt;
function z.obtenerTablaDeArgumentos(frame)&lt;br /&gt;
	-- global args&lt;br /&gt;
	args = {}&lt;br /&gt;
	local function paramMerge(orig, copy)&lt;br /&gt;
		local data = {}&lt;br /&gt;
		for key, val in pairs(orig) do&lt;br /&gt;
			data[key] = val&lt;br /&gt;
		end&lt;br /&gt;
		for key, val in pairs(copy) do&lt;br /&gt;
			data[key] = val&lt;br /&gt;
		end&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
	if frame then&lt;br /&gt;
		-- parentArgs = frame:getParent().args or {}&lt;br /&gt;
		if type(frame.getParent) == &amp;#039;function&amp;#039; then&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if parent then&lt;br /&gt;
				args = paramMerge(args, parent.args)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		-- invokeArgs = frame.args or frame or {}&lt;br /&gt;
		if type(frame.args) == &amp;#039;table&amp;#039; then&lt;br /&gt;
			args = paramMerge(args, frame.args)&lt;br /&gt;
		elseif type(frame) == &amp;#039;table&amp;#039; then&lt;br /&gt;
			args = paramMerge(args, frame)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	@name	obtenerValorDeArgumentos&lt;br /&gt;
	@global	args&lt;br /&gt;
	@param	list&lt;br /&gt;
	@return	string or nil&lt;br /&gt;
	@descr	Obtiene el primer argumento válido desde una tabla de parámetros.&lt;br /&gt;
			Esta tabla de parámetros es una lista que contiene los nombres&lt;br /&gt;
			de los argumentos u otras tablas con las funciones para obtenerlos.&lt;br /&gt;
	Parámetros:&lt;br /&gt;
		con los argumentos:		{ [&amp;#039;campo&amp;#039;] = &amp;#039;valor&amp;#039;, [&amp;#039;key&amp;#039;] = &amp;#039;value&amp;#039; }&lt;br /&gt;
		y usando la llamada:	obtenerValorDeArgumentos{&amp;#039;dato&amp;#039;, &amp;#039;campo&amp;#039;, &amp;#039;key&amp;#039;}&lt;br /&gt;
		se obtiene el valor:	&amp;#039;valor&amp;#039;&lt;br /&gt;
		pues &amp;#039;dato&amp;#039; no es un argumento y &amp;#039;campo&amp;#039; es el primero encontrado&lt;br /&gt;
	Funciones:&lt;br /&gt;
		también se puede llamar con una función de la forma&lt;br /&gt;
			obtenerValorDeArgumentos{&amp;#039;dato&amp;#039;, { obtenerDato, &amp;#039;1&amp;#039;, &amp;#039;2&amp;#039; }}&lt;br /&gt;
		de forma que si el argumento &amp;#039;dato&amp;#039; no existe se llama a la función&lt;br /&gt;
			obtenerDato(&amp;#039;1&amp;#039;, &amp;#039;2&amp;#039;)&lt;br /&gt;
--]]&lt;br /&gt;
function z.obtenerValorDeArgumentos(list)&lt;br /&gt;
	-- global args&lt;br /&gt;
	local lang = mw.language.getContentLanguage()&lt;br /&gt;
	local err, key&lt;br /&gt;
	if type(list) == &amp;#039;number&amp;#039; then&lt;br /&gt;
		key = args[list]&lt;br /&gt;
	elseif type(list) == &amp;#039;string&amp;#039; then&lt;br /&gt;
		key = args[list] or args[lang:ucfirst(list)]&lt;br /&gt;
	elseif type(list) == &amp;#039;table&amp;#039; then&lt;br /&gt;
		for num, val in ipairs(list) do&lt;br /&gt;
			if type(val) == &amp;#039;string&amp;#039; then&lt;br /&gt;
				key = z.obtenerValorDeArgumentos(val)&lt;br /&gt;
			elseif type(val) == &amp;#039;function&amp;#039; then&lt;br /&gt;
				err, key = pcall(val)&lt;br /&gt;
				if err ~= true then&lt;br /&gt;
					key = nil&lt;br /&gt;
				end&lt;br /&gt;
			elseif type(val) == &amp;#039;table&amp;#039; then&lt;br /&gt;
				if val[1] and type(val[1]) == &amp;#039;function&amp;#039; then&lt;br /&gt;
					err, key = pcall(val[1], unpack(val, 2))&lt;br /&gt;
					if err ~= true then&lt;br /&gt;
						key = nil&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if key ~= nil and key ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				return key -- break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return key&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return z&lt;/div&gt;</summary>
		<author><name>Museo8bits</name></author>
	</entry>
</feed>