Módulo:Localización entrenador

De WikiDex
Ir a la navegaciónIr a la búsqueda

La documentación para este módulo puede ser creada en Módulo:Localización entrenador/doc. También existe una plantilla con el mismo nombre; puedes obtener más información sobre la plantilla en Plantilla:Localización entrenador

local p = {}    -- variable que tendrá todas las funciones accesibles externamente 

-- Lista de parámetros y el título del juego, ordenados por fecha de salida
local _juegos = {
	{ ['p'] = 'RAAm', ['j'] = 'Pokémon Rojo, Pokémon Azul y Pokémon Amarillo' },
	{ ['p'] = 'OPC', ['j'] = 'Pokémon Oro, Pokémon Plata y Pokémon Cristal' },
	{ ['p'] = 'RZE', ['j'] = 'Pokémon Rubí, Pokémon Zafiro y Pokémon Esmeralda' },
	{ ['p'] = 'RFVH', ['j'] = 'Pokémon Rojo Fuego y Pokémon Verde Hoja' },
	{ ['p'] = 'DPPt', ['j'] = 'Pokémon Diamante, Pokémon Perla y Pokémon Platino' },
	{ ['p'] = 'HGSS', ['j'] = 'Pokémon Oro HeartGold y Pokémon Plata SoulSilver' },
	{ ['p'] = 'NB', ['j'] = 'Pokémon Negro y Pokémon Blanco' },
	{ ['p'] = 'N2B2', ['j'] = 'Pokémon Negro 2 y Pokémon Blanco 2' },
	{ ['p'] = 'XY', ['j'] = 'Pokémon X y Pokémon Y' },
	{ ['p'] = 'ROZA', ['j'] = 'Pokémon Rubí Omega y Pokémon Zafiro Alfa' },
	{ ['p'] = 'SL', ['j'] = 'Pokémon Sol y Pokémon Luna' },
	{ ['p'] = 'USUL', ['j'] = 'Pokémon Ultrasol y Pokémon Ultraluna' },
	{ ['p'] = 'LGPE', ['j'] = "Pokémon: Let's Go, Pikachu! y Pokémon: Let's Go, Eevee!" },
	{ ['p'] = 'EpEc', ['j'] = 'Pokémon Espada y Pokémon Escudo' },
	{ ['p'] = 'DBPR', ['j'] = 'Pokémon Diamante Brillante y Pokémon Perla Reluciente' },
	{ ['p'] = 'LPA', ['j'] = 'Leyendas Pokémon: Arceus' },
	{ ['p'] = 'EP', ['j'] = 'Pokémon Escarlata y Pokémon Púrpura' },
}

-- genera un elemento con la localización en un juego
-- retorna htmlbuilder
local function _generaJuego( titulo, datos )
	local containerDiv
	
	containerDiv = mw.html.create( 'div' )
		:attr( 'class', 'jj' )
		:tag( 'h3' )
		:wikitext( titulo )
		:done()
		:newline() -- Para que las listas no rompan 
		:wikitext( datos )
		:newline() -- Para que las listas no rompan 

	return containerDiv
end

-- genera un elemento con la lista de localizaciones
-- retorna htmlbuilder
local function _generaListaJuegos( frame, args )
	local containerDiv, i, v, ultIndiceConDatos

	containerDiv = mw.html.create( 'div' )
		:attr( 'class', 'locentrenador' )

	ultIndiceConDatos = -1
	for i, v in ipairs( _juegos ) do
		-- Si un juego no tiene datos, no se muestra
		-- Ojo: Si tiene el parámetro pero no está relleno, se mostrará, para que sea rellenado
		if args[ v['p'] ] ~= nil then -- and args[ v['p'] ] ~= ''
			while ultIndiceConDatos ~= -1 and i - ultIndiceConDatos > 1 do
				-- Hay juegos intermedios sin rellenar. Se rellenan con "No aparece"
				ultIndiceConDatos = ultIndiceConDatos + 1
				containerDiv:node( _generaJuego( _juegos[ ultIndiceConDatos ]['j'], frame:preprocess( '{{No aparece}}' ) ) )
			end
			containerDiv:node( _generaJuego( v['j'], args[ v['p'] ] ) )
			ultIndiceConDatos = i
		end
	end

	containerDiv:allDone()

	return tostring( containerDiv )
end

-- Función principal
function p.main( frame )
	local out
	if frame.args['local'] == '1' then
		sourceargs = frame.args
		function frame:extensionTag()
			return ''
		end
	else
		sourceargs = frame:getParent().args
	end
	
	out = {}
	table.insert( out, frame:extensionTag( 'templatestyles', '', { src = 'Estilos de plantilla:Localización entrenador/estilos.css' } ) )
	table.insert( out, _generaListaJuegos( frame, sourceargs ) )

	return table.concat( out, '' )
end

return p     -- Todos los módulos terminan retornando la variable que contiene las funciones