Module:Tableau Pokédex

De Poképédia
Aller à la navigation Aller à la recherche

But et contexte[modifier]

Ce module permet de facilement créer des tableaux de listes de Pokémon qui incluent huit colonnes : Numéro, Image, Nom français, Nom anglais, Nom allemand, Nom japonais (Kanas), Nom japonais (Déposé) et Types.

Utilisation[modifier]

Paramètres[modifier]

Paramètres du tableau (dans l'invocation)
  • jeu : pour forcer l'utilisation de miniatures provenant d'un jeu plutôt que celles affichées par défaut sur le wiki, il faut invoquer le module de cette façon : jeu=JEU ; JEU étant l'abréviation du Modèle:Jeu.
  • ndex : pour utiliser des numéros différents du Pokédex National, renseigner ndex=non.
Paramètres des lignes (non nommés, à renseigner séparés de slashs entourés d'espaces  / )
  • le numéro du Pokémon, uniquement si le paramètre ndex=non est renseigné.
  • le nom du Pokémon.
  • facultatif : le nom de la forme du Pokémon, à noter séparé d'un slash entouré d'espaces  / , en utilisant les noms de formes utilisés dans les noms des fichiers miniatures.

Exemples d'utilisation[modifier]

Avec les numéros du Pokédex National[modifier]

{{#invoke:Tableau Pokédex|pokedex|
Mewtwo
Mewtwo / Méga X
Victini
Pikachu / Cosplayeur
}}

ce qui donne :

NuméroImageNom françaisNom anglaisNom allemandNom japonaisTypes
KanasDéposé
01500150MewtwoMewtwoMewtuミュウツーMyūtsūMewtwoPsy
0150Méga-Mewtwo XMega Mewtwo XMega-Mewtu XメガミュウツーXMega Myūtsū XMega Mewtwo XPsy
Combat
04940494VictiniVictiniVictiniビクティニBikutiniVictiniPsy
Feu
00250025Pikachu
Pikachu Cosplayeur
Pikachu
Cosplay Pikachu
Pikachu
Cosplay-Pikachu
ピカチュウPikachū
おきがえピカチュウOkigae Pikachū
PikachuÉlectrik

Avec des numéros spécifiques[modifier]

{{#invoke:Tableau Pokédex|pokedex|ndex=non|jeu=NB|
000 / Victini
001 / Kyurem
001 / Kyurem / Blanc
002 / Bulbizarre
}}

ce qui donne :

NuméroImageNom françaisNom anglaisNom allemandNom japonaisTypes
KanasDéposé
0000494VictiniVictiniVictiniビクティニBikutiniVictiniPsy
Feu
0010646KyuremKyuremKyuremキュレムKyuremuKyuremDragon
Glace
0646Kyurem
Kyurem Blanc
Kyurem
White Kyurem
Kyurem
Weißes Kyurem
キュレムKyuremu
ホワイトキュレムHowaito Kyuremu
KyuremDragon
Glace
0020001BulbizarreBulbasaurBisasamフシギダネFushigidaneFushigidanePlante
Poison

Dépendances du module[modifier]


local p = {}

function p.pokedex(frame)
	local result = {}
	local data_ndex = require("Module:Data/NumérosPokémon")
	local translation = mw.loadData("Module:Data/NomsPokémon")
	local data_form = require("Module:Data/NomsFormes")
	local data_types = require("Module:Data/TypesPokémon")
	
	local error_missing_form = "[[Fichier:Panneau Attention.png|x20px|Le nom de cette forme n'est pas renseigné dans cette langue dans les pages de données. Veuillez le renseigner sur la page Module:Data/NomsFormes, ou bien contactez un administrateur ou écrivez dans la page de discussion.|link=Module:Data/NomsFormes]] ERREUR"

	-- EN-TÊTE
	table.insert(result, '<table class="tableaustandard sortable entetefixe" style="text-align:center;"><thead><tr>')
	table.insert(result, '<th rowspan="2">Numéro</th>')
	table.insert(result, '<th rowspan="2">Image</th>')
	table.insert(result, '<th rowspan="2">Nom français</th>')
	table.insert(result, '<th rowspan="2">Nom anglais</th>')
	table.insert(result, '<th rowspan="2">Nom allemand</th>')
	table.insert(result, '<th colspan="2">Nom japonais</th>')
	table.insert(result, '<th rowspan="2">Types</th></tr>')
	table.insert(result, '<tr><th>Kanas</th>')
	table.insert(result, '<th>Déposé</th></tr></thead>')
	table.insert(result, '<tbody>')
	
	local pokemon = frame.args[1]
	if pokemon == nil
	then pokemon = {}
	else pokemon = mw.text.split(pokemon, "\n")
	end
	local arguments = {}
	local num_pred = nil
	
	local jeu = frame.args["jeu"]
	local use_ndex = frame.args["ndex"]
	if use_ndex then use_ndex = (use_ndex ~= "non") else use_ndex = true end
	
	local i = 1
	while pokemon[i] do
		arguments = mw.text.split(pokemon[i], " / ")
		
		if arguments[1] ~= ""
		then 
			local ndex_str
			local num
			local poke_fr
			local num_form = 2
			
			if use_ndex
			then poke_fr = arguments[1]
				ndex_str = data_ndex[poke_fr]
				num = ndex_str
			else poke_fr = arguments[2]
				ndex_str = data_ndex[poke_fr]
				num = arguments[1]
			end
			if not poke_fr then poke_fr = "" end
			
			local ndex = tonumber(ndex_str)
			if ndex == nil then ndex_str = "—" end
			if not num or num == "" then num = "—" end
			
			local rowspan_num = 1
			if num ~= num_pred or num == "—"
			then local ii = i + 1
				while pokemon[ii] do
					local next_arguments = mw.text.split(pokemon[ii], " / ")
					local num_next
					if use_ndex
					then num_next = data_ndex[next_arguments[1]]
						-- if not num_next then num_next == "—" end
					else num_next = next_arguments[1]
					end
					
					if num_next == num and num ~= "—"
					then rowspan_num = rowspan_num + 1
					else break
					end
					ii = ii + 1
				end
				
				table.insert(result, '<tr><td rowspan="' .. rowspan_num .. '">' .. num .. '</td>')
			end
			num_pred = num
			
			local form
			if use_ndex then form = arguments[2] else form = arguments[3] end
			if form == "Mâle"
			then form = "♂"
			else if form == "Femelle"
				then form = "♀"
				end
			end
			
			local form_image
			if form ~= "Galar Normal" and form ~= "Gigamax Aigüe" and form ~= "Gigamax Grave"
			then form_image = form
			else form_split = mw.text.split(form, " ")
				form_image = form_split[1]
			end
			
			if ndex_str == "—" then ndex_str = "???" end
			
			local image
			if jeu == nil
			then if form == nil or form == "Normale" or form == "Normal"
				then image = frame:expandTemplate{title='Miniature', args={ndex_str}}
				else image = frame:expandTemplate{title='Miniature', args={ndex_str, form_image}}
				end
			else if form == nil or form == "Normale" or form == "Normal"
				then image = frame:expandTemplate{title='Miniature', args={ndex_str, jeu = jeu}}
				else image = frame:expandTemplate{title='Miniature', args={ndex_str, form_image, jeu = jeu}}
				end
			end
			
			table.insert(result, '<td>' .. image .. '</td>')
			
			local link
			if form == nil
			then link = poke_fr
			else local form_dict = {
					["Alola"] = poke_fr .. " d'Alola",
					["Galar"] = poke_fr .. " de Galar",
					["Hisui"] = poke_fr .. " de Hisui",
					["Paldea"] = poke_fr .. " de Paldea",
					["Méga"] = "Méga-" .. poke_fr,
					["Méga X"] = "Méga-" .. poke_fr .. " X",
					["Méga Y"] = "Méga-" .. poke_fr .. " Y",
					["Gigamax"] = poke_fr .. " Gigamax",
					["Infinimax"] = poke_fr .. " Infinimax",
					["Gigamax Aigüe"] = poke_fr .. " Gigamax",
					["Gigamax Grave"] = poke_fr .. " Gigamax",
					["Gigamax Poing Final"] = poke_fr .. " Gigamax",
					["Gigamax Mille Poings"] = poke_fr .. " Gigamax",
					["Galar Normal"] = poke_fr .. " de Galar",
					["Galar Transe"] = poke_fr .. " de Galar",
					["Paldea Combative"] = poke_fr .. " de Paldea",
					["Paldea Flamboyante"] = poke_fr .. " de Paldea",
					["Paldea Aquatique"] = poke_fr .. " de Paldea",
					["Casquette Originale"] = poke_fr .. " à Casquette",
					["Casquette de Hoenn"] = poke_fr .. " à Casquette",
					["Casquette de Sinnoh"] = poke_fr .. " à Casquette",
					["Casquette d'Unys"] = poke_fr .. " à Casquette",
					["Casquette de Kalos"] = poke_fr .. " à Casquette",
					["Casquette d'Alola"] = poke_fr .. " à Casquette",
					["Casquette Partenaire"] = poke_fr .. " à Casquette",
					["Casquette Monde"] = poke_fr .. " à Casquette",
					["Cosplayeur"] = poke_fr .. " Cosplayeur",
					["Rockeur"] = poke_fr .. " Rockeur",
					["Lady"] = poke_fr .. " Lady",
					["Star"] = poke_fr .. " Star",
					["Docteur"] = poke_fr .. " Docteur",
					["Catcheur"] = poke_fr .. " Catcheur",
					["Troizépi"] = poke_fr .. " Troizépi",
					["Partenaire"] = poke_fr .. " Partenaire"
				}
				local link_tmp = form_dict[form]
				if not link_tmp
				then if form 
					then
						if poke_fr == "Kyurem" or poke_fr == "Necrozma"
							then link_tmp = poke_fr .. " " .. form
						elseif poke_fr == "Sylveroy"
							then link_tmp = poke_fr .. ", le " .. form
						end
					end
				end
				if link_tmp
				then link = link_tmp
				else link = poke_fr
				end
			end
			
			
			local special_form = form ~= nil and (form == "Méga" or form == "Méga X" or form == "Méga Y" or form == "Primo" or form == "Ultra" and poke_fr == "Necrozma")
			local data_form_this = data_form[ndex_str]
			if data_form_this then data_form_this = data_form_this[form] end
			
			if form == nil
			then table.insert(result, '<td height="50px" id="' .. poke_fr .. '">' .. "[[" .. link .. "|" .. poke_fr .. "]]" .. '</td>')
			else local form_long_fr
				if data_form_this then form_long_fr = data_form_this.fr else form_long_fr = nil end
				if not form_long_fr then form_long_fr = error_missing_form end
				if special_form
				then table.insert(result, '<td id="' .. poke_fr .. " " .. form .. '">' .. "[[" .. form_long_fr .. "]]</td>")
				else table.insert(result, '<td id="' .. poke_fr .. " " .. form .. '">' .. "[[" .. link .. "|" .. poke_fr .. "]]<br><small>" .. form_long_fr .. '</small></td>')
				end
			end
			
			local poke_en
			if ndex ~= nil
			then poke_en = translation[ndex].en
			else poke_en = translation[poke_fr]
				if poke_en then poke_en = poke_en.en else poke_en = "?" end
			end
			
			if form == nil
			then table.insert(result, '<td>' .. "[[:en:" .. poke_en .. " (Pokémon)|" .. poke_en .. "]]" .. '</td>')
			else local form_long_en
				if data_form_this then form_long_en = data_form_this.en else form_long_en = nil end
				if not form_long_en then form_long_en = error_missing_form end
				if special_form
				then table.insert(result, '<td>' .. "[[:en:" .. poke_en .. " (Pokémon)|" .. form_long_en .. "]]</td>")
				else table.insert(result, '<td>' .. "[[:en:" .. poke_en .. " (Pokémon)|" .. poke_en .. "]]<br><small>" .. form_long_en .. '</small></td>')
				end
			end
			
			local poke_de
			if ndex ~= nil
			then poke_de = translation[ndex].de
			else poke_de = translation[poke_fr]
				if poke_de then poke_de = poke_de.de else poke_de = "?" end
			end
			
			if form == nil
			then table.insert(result, '<td>' .. "[[:de:" .. poke_de .. "|" .. poke_de .. "]]" .. '</td>')
			else local form_long_de
				if data_form_this then form_long_de = data_form_this.de else form_long_de = nil end
				if not form_long_de then form_long_de = error_missing_form end
				if special_form
				then table.insert(result, '<td>' .. "[[:de:" .. poke_de .. "|" .. form_long_de .. "]]</td>")
				else table.insert(result, '<td>' .. "[[:de:" .. poke_de .. "|" .. poke_de .. "]]<br><small>" .. form_long_de .. '</small></td>')
				end
			end
			
			local poke_ja = "?"
			local poke_romaji = "?"
			local poke_tm = "?"
			if ndex ~= nil
			then poke_ja = translation[ndex].ja
				poke_romaji = translation[ndex]["ja-romaji"]
				poke_tm = translation[ndex]["ja-déposé"]
			else poke_ja = translation[poke_fr]
				if poke_ja
				then poke_ja = poke_ja.ja
					poke_romaji = translation[poke_fr]["ja-romaji"]
					poke_tm = translation[poke_fr]["ja-déposé"]
				else poke_ja = "?"
				end
			end
			if poke_tm == nil then poke_tm = poke_romaji end
			
			if form == nil
			then local link_ja = "[[:ja:" .. poke_ja .."|" .. poke_ja .. "]]"
				local poke_furi = frame:expandTemplate{title='Furigana', args={link_ja, poke_romaji}}
				table.insert(result, '<td><span lang="ja">' .. poke_furi .. "</span></td><td>" .. "[[:ja:" .. poke_ja .."|" .. poke_tm .. ']]</td>')
			else local form_long_ja
				if data_form_this then form_long_ja = data_form_this.ja else form_long_ja = nil end
				if not form_long_ja then form_long_ja = error_missing_form end
				local form_long_romaji
				if data_form_this then form_long_romaji = data_form_this["ja-romaji"] else form_long_romaji = nil end
				if not form_long_romaji then form_long_romaji = error_missing_form end
				if special_form
				then local form_long_tm
					if data_form_this then form_long_tm = data_form_this["ja-déposé"] else form_long_tm = nil end
					if not form_long_tm then form_long_tm = error_missing_form end
					local link_ja = "[[:ja:" .. poke_ja .."|" .. form_long_ja .. "]]"
					local poke_furi = frame:expandTemplate{title='Furigana', args={link_ja, form_long_romaji}}
					table.insert(result, '<td><span lang="ja">' .. poke_furi .. "</span></td><td>" .. "[[:ja:" .. poke_ja .."|" .. form_long_tm .. ']]</td>')
				else local link_ja = "[[:ja:" .. poke_ja .."|" .. poke_ja .. "]]"
					local poke_furi = frame:expandTemplate{title='Furigana', args={link_ja, poke_romaji}}
					local form_furi = frame:expandTemplate{title='Furigana', args={form_long_ja, form_long_romaji}}
					
					local form_long_ja2
					if data_form_this then form_long_ja2 = data_form_this["ja2"] else form_long_ja2 = nil end
					local form_long_romaji2
					if data_form_this then form_long_romaji2 = data_form_this["ja-romaji2"] else form_long_romaji2 = nil end
					if not form_long_romaji2 then form_long_romaji2 = error_missing_form end
					if form_long_ja2 == nil
					then table.insert(result, '<td><span lang="ja">' .. poke_furi .. "<br><small>" .. form_furi .. "</small></span></td><td>" .. "[[:ja:" .. poke_ja .."|" .. poke_tm .. ']]</td>')
					else local form_furi2 = frame:expandTemplate{title='Furigana', args={form_long_ja2, form_long_romaji2}}
						table.insert(result, '<td><span lang="ja">' .. poke_furi .. "<br><small>" .. form_furi .. "</small><br><small>" .. form_furi2 .. "</small></span></td><td>" .. "[[:ja:" .. poke_ja .."|" .. poke_tm .. ']]</td>')
					end
				end
			end
			
			local first_type = nil
			local second_type = nil
			
			local types_list = data_types[poke_fr]
			if types_list
			then local types = types_list[1]
				
				if form
				then local types_form = types_list[form]
					if types_form then types = types_form end
				end
				
				first_type = types[1]
				second_type = types[2]
			end
			
			if not first_type then first_type = "Inconnu" end
			
			if not second_type
			then table.insert(result, '<td>' .. frame:expandTemplate{title='Type', args={first_type}} .. '</td></tr>')
			else table.insert(result, '<td>' .. frame:expandTemplate{title='Type', args={first_type, second_type}} .. '</td></tr>')
			end
		end
		
		i = i + 1
	end

	table.insert(result, '</tbody></table>')

	return table.concat(result, "")
end

return p