FANDOM


--<nowiki>
 
local p = {}
 
local games = {
    ["Q1"] = "Quake",
    ["Q2"] = "Quake II",
    ["Q3"] = "Quake III Arena",
    ["Q4"] = "Quake 4",
    ["ET"] = "Enemy Territory: Quake Wars",
    ["QL"] = "Quake Live",
    ["QC"] = "Quake Champions",
    ["QNADA"] = " ", -- Constante dummy
}
 
-- ====================
-- Buscar un título corto y sin desambiguación
-- ====================
function stitle(game)
	local result = games[game]
	return result
end
 
-- ====================
-- Esta función , "links", es para los enlaces ordinarios dentro del cuerpo de
-- una infobox.  Así que si lo que quieres devolver es [[Quake 4]], entonces
-- usa la sintáxis:
--        {{#invoke:Juegos|links|{{{juegos|}}}}}
-- Especificando un segundo argumento devuelve el texto en cursiva:
--        {{#invoke:Juegos|links|{{{juegos|}}}|1}}
-- ====================
 
function p.links(frame)
	local result = ''
	local game_list = mw.text.split(frame.args[1], "%s*,%s*")
	for n, game in ipairs(game_list) do
		if game:lower() == "none" or game:lower() == "no" or game:lower() == "ninguno" then
			result = ''
		else
			result = result .. '[[' .. games[game] .. '|' .. stitle(game) .. ']]'
			if n ~= #game_list then
				result = result .. '<br />'
			end
		end
	end
	if (frame.args[2] and result ~= '') then
		return "''" .. result .. "''"
	else
		return result
	end
end
 
-- ====================
-- Esta función, mencionado, es para los enlaces ordinarios dentro del cuerpo de
-- una infobox, si se ingresa en "Juegos": "no", "none" o "ninguno", devolverá
-- "Solo mencionado" sin cursiva y enlace.
-- Así que si lo que quieres devolver es [[Quake 4]], entonces
-- la sintáxis es:
--		{{#invoke:Juegos|mencionado|{{{juegos|}}}}}
-- Especificando un segundo argumento devuelve el texto en cursiva:
--		{{#invoke:Juegos|mencionado|{{{juegos|}}}|1}}
-- ====================
function p.mencionado(frame)
	local result = ''
	local game_list = mw.text.split(frame.args[1], "%s*,%s*")
	for n, game in ipairs(game_list) do
		if game:lower() == "none" or game:lower() == "no" or game:lower() == "ninguno" then
			result = 'Solo mencionado'
		else
			result = result .. '[[' .. games[game] .. '|' .. stitle(game) .. ']]'
			if n ~= #game_list then
				result = result .. '<br />'
			end
		end
	end
	if (frame.args[2] and result ~= '') then
	    if result == "Solo mencionado" then
	        return "" .. result .. ""
	    else
	        return "''" .. result .. "''"
	    end
	else
		return result
	end
end
 
-- ====================
-- Pequeña función para invertir los resultados de "ipairs"
-- ====================
function TablaInversa(t)
	local tablaInvertida = {}
	local contarElementos = #t
    for k, v in ipairs(t) do
        tablaInvertida[contarElementos + 1 - k] = v
    end
    return tablaInvertida
end
 
-- ====================
-- Esta es una función que inserta genéricamente un enlace en un supertítulo.
-- Simplemente a la página de juego en sí o a una página más específica.
--
-- {{#invoke:Juegos|title|Q4}} resulta en [[Quake 4|Quake 4]]
-- {{#invoke:Juegos|title|Q4|armas de}} resulta en [[Armas de Quake 4|Quake 4]]
-- {{#invoke:Juegos|title|Q4|armas de|armas de}} resulta en [[Armas de Quake 4|Armas de Quake 4]]
-- ====================
function p.title(frame)
	local result = ''
	local game_list = mw.text.split(frame.args[1], "%s*,%s*")
	local r = TablaInversa(game_list)
	for n, game in ipairs(r) do
		if game:lower() == "none" or game:lower() == "no" or game:lower() == "ninguno" then
			result = 'solo mencionado'
			if frame.args[3] then
				result = frame.args[3] .. ' ' .. result
			end
		else
			local link
			if frame.args[2] then
				link = frame.args[2] .. ' ' .. stitle(game)
			else
				link = games[game]
			end
			local text = stitle(game)
			if frame.args[3] and n == #r then
				text = frame.args[3] .. ' ' .. text
			end
--			result = result .. '[[' .. link .. '|' .. text .. ']]'
			result =  '[[' .. link .. '|' .. text .. ']]'.. result
			if n ~= #r then
--				result = result .. ' / '
				result = ' / '.. result
			end
		end
	end
	return result
end
 
return p
 
--</nowiki>