FANDOM


local p = {}    -- variable que tendrá todas las funciones accesibles externamente 
 
-- retorna un nodo html (td) con una cara
local function _td_cara(poke, ed)
	local td, pokeimagen, articulo
	-- Para el enlace a artículo quitamos el sufijo "_hembra"
	articulo = mw.ustring.gsub(poke, '[_ ]hembra', '')
	pokeimagen = poke
	if ed == '3DS' then
		pokeimagen = string.format( '%s %s' , poke, '3DS' )
	else
		pokeimagen = poke
	end
	td = string.format('| style="width:40px;" | [[Archivo:Cara de %s.png|border|40px|link=%s]]\n', pokeimagen, articulo )
	return td
end
 
-- retorna un nodo html (td) cuando no hay cara
local function _td_sincara()
	local td
	td = '| style="width:40px;" |\n'
	return td
end
 
-- retorna un nodo html (td) con la celda de color
local function _td_color(color)
	local td, codigo
	codigo = '#FFFAFA'
	if color == 'Rojo' then
		codigo = '#FA5050'
	elseif color == 'Azul' then
		codigo = '#388EFF'
	elseif color == 'Verde' then
		codigo = '#64BA33'
	end
	td = string.format('| style="background:%s; height:3px;" |\n', codigo )
	return td
end
 
-- Función principal
function p.main(frame)
	local sourceargs, textopiso, filas, fila, iterparam, refparam, celdaspokemon, celdascolor, itercelda, itercolor, ed
	if frame.args['local'] == '1' then
		sourceargs = frame.args
	else
		sourceargs = frame:getParent().args
	end
	if sourceargs['P'] == 'PB' then
		textopiso = 'PB'
	elseif type( string.find( ( sourceargs['P'] or '0' ), '^%-?[0-9]') ) ~= 'nil' then
		textopiso = string.format( 'P %s', (sourceargs['P'] or '0') )
	else
		textopiso = sourceargs['P']
	end
	if sourceargs['ed'] == '3DS' then
		ed = '3DS'
	else
		ed = ''
	end
 
	-- Generar las celdas de los Pokémon y los colores
	celdaspokemon = {}
	celdascolor = {}
	iterparam = 1
	while true do
		refparam = string.format( 'P%s', iterparam )
		if type( sourceargs[refparam] ) == 'nil' or sourceargs[refparam] == '' then
			--table.insert( celdaspokemon, _td_sincara() )
			--table.insert( celdaspokemon, _td_color() )
			break -- Salimos del bucle
		else
			table.insert( celdaspokemon, _td_cara( sourceargs[refparam], ed ) )
			table.insert( celdascolor, _td_color( sourceargs[string.format( 'colorP%s', iterparam )] ) )
		end
		iterparam = iterparam + 1 -- No olvidarse de esta línea :)
	end
 
	-- Agregar las celdas a las filas
	filas = {} -- Filas de la tabla
	-- Rowspan es 2 para 1 fila, 4 para 2, 6 para 3
	fila = string.format( '|-\n| style="text-align:center; font-size:20px; width:55px;" rowspan="%s"| %s\n', ( math.floor( ( #celdaspokemon - 1 ) / 12 ) + 1 ) * 2, textopiso )
	table.insert( filas, fila )
	-- Ahora los Pokémon
	itercelda = 1 -- Los índices en Lua empiezan en 1!!
	while itercelda <= #celdaspokemon do
		table.insert( filas, celdaspokemon[itercelda] )
		-- Si hay más de 12, al llegar a 12 creamos nueva fila con colores y nueva para los siguientes 12 Pokémon
		if ( #celdaspokemon > 12 ) and ( ( itercelda ) % 12 == 0 ) then
			table.insert( filas, '|-\n' )
			itercolor = itercelda - 11
			while itercolor <= itercelda do
				table.insert( filas, celdascolor[itercolor] )
				itercolor = itercolor + 1
			end
			table.insert( filas, '|-\n' )
		end
		itercelda = itercelda + 1
	end
	-- Si hay menos de 12, hay que rellenar con celdas vacías la primera fila
	if #celdaspokemon < 12 then
		itercelda = #celdaspokemon
		while itercelda < 12 do
			table.insert( filas, _td_sincara() )
			itercelda = itercelda + 1
		end
	end
	if #celdaspokemon > 0 then
		-- Ahora la última fila de colores
		table.insert( filas, '|-\n' )
		itercolor = math.floor( ( #celdaspokemon - 1 ) / 12 ) * 12 + 1
		while itercolor <= #celdascolor do
			table.insert( filas, celdascolor[itercolor] )
			itercolor = itercolor + 1
		end
	end
	return mw.text.trim(table.concat( filas ))
end
 
return p     -- Todos los módulos terminan retornando la variable que contiene las funciones
*Nota: Algunos de los enlaces son de afiliados, lo que significa que, sin costo adicional para ti, Fandom ganará una comisión si haces clic y realizas una subscripción. El contenido de la comunidad está disponible bajo CC-BY-SA a menos que se indique lo contrario.

Algunos de los enlaces son de afiliados, lo que significa que, sin costo adicional para ti, Fandom ganará una comisión si haces clic y realizas una subscripción.

Stream the best stories.

Algunos de los enlaces son de afiliados, lo que significa que, sin costo adicional para ti, Fandom ganará una comisión si haces clic y realizas una subscripción.

Get Disney+