Module:Data/Données Capacités Génération 8/doc

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

Ceci est la page de documentation pour Module:Data/Données Capacités Génération 8

Ce tableau centralise toutes les données des capacités pour la huitième génération. Il est utilisé par le Module:Ressources/donneesCapacite.

Générer ce tableau[modifier]

La tâche de générer ce tableau est plus ardue que les générations précédentes car il n'est pas possible de récupérer toutes les données en un coup, cela fait dépasser le temps alloué pour l'exécuter d'un script. La procédure à suivre est décrite ci-dessous.

Étape 1 : se placer sur la page d'un module en ayant blanchi la zone d'édition, et placer le code suivant dans la console située sous la zone d'édition et l'exécuter. Ce code va récupérer toutes les données souhaitées des capacités apparues lors des sept premières générations, puis afficher dans la console son résultat. Copier l'intégralité du résultat, hormis les erreurs éventuelles affichées en bas, puis coller le contenu dans la zone d'édition. Effacer la console.

local generation = 8
local generations = {'Première', 'Deuxième', 'Troisième', 'Quatrième', 'Cinquième', 'Sixième', 'Septième'}
local donnees = {'Type', 'Catégorie de capacité', 'Puissance', 'Précision', 'PP'}

local data = {}
local erreurs = ""
local capacites, nom, souspage, requete, reussite, i, nom_ancien, valeur
for _, generation_apparition in ipairs(generations) do
	capacites = mw.smw.ask('[[Génération de la capacité::' .. generation_apparition .. ' génération]]|limit=5000')
	for indice, resultat in ipairs(capacites) do
		nom = mw.ustring.gsub(resultat[1], '%[%[.-%|(.-)%]%]', '%1')
		souspage = nom .. '/Génération ' .. generation
		requete = mw.smw.ask('[[' .. souspage .. ']]|?' .. table.concat(donnees, '=|?') .. '=')
		reussite = true
		if requete == Nil then reussite = False
		else 
			i = 2
			while i <= #donnees + 1 do
				if requete[1][i] == Nil then reussite = False end
				i = i + 1
			end
		end
		if reussite == False then
			erreurs = erreurs .. 'Info non trouvée pour ' .. nom .. '\n'
		else
			nom_ancien = mw.ustring.gsub(mw.ustring.gsub(requete[1][1], '%[%[.-/Génération ' .. generation .. '%|(.-)/Génération ' .. generation .. '%]%]', '%1'), ' %(capacité%)', '')
			valeur = {'"' .. nom_ancien .. '"'}
			i = 2
			while i <= #donnees + 1 do
				if i == 2 or i == 3 or i == 7 then table.insert(valeur, '"' .. requete[1][i] .. '"')
				else 
					if i == 4 and (nom == "Abîme" or nom == "Empal'Korne" or nom == "Glaciation" or nom == "Guillotine") then table.insert(valeur, '"[[OHKO]]"')
					else table.insert(valeur, requete[1][i])
					end
				end
				i = i +1
			end
			table.insert(data, valeur)
		end
	end
end

mw.log('local p = {}')
mw.log('p.data = {')
for _, valeur in ipairs(data) do
	mw.log('	{' .. table.concat(valeur, ', ') .. '},')
end
mw.log('}')
mw.log('return p')
mw.log('')
mw.log(erreurs)

Étape 2 : placer le code suivant dans la console et l'exécuter. Ce code va trier le tableau généré à l'étape précédente. Copier son résultat dans la zone d'édition en remplacement de ce que vous y avez mis à l'étape précédente. Effacer la console.

local data = p.data
local enleverAccents = require("Module:Ressources/enleverAccents")
local function comp(valeur1, valeur2)
	return enleverAccents(valeur1[1]) < enleverAccents(valeur2[1])
end
table.sort(data, comp)

local donnees = {'Type', 'Catégorie de capacité', 'Puissance', 'Précision', 'PP'}
mw.log('local p = {}')
mw.log('p.data = {')
for _, valeur in ipairs(data) do
	local i = 1
	while i <= #donnees do
		if i == 1 or i == 2 or i == 3 or i == 7 or (i == 4 and valeur[i] == "[[OHKO]]") then valeur[i] = '"' .. valeur[i] .. '"' end
		i = i + 1
	end
	mw.log('	{' .. table.concat(valeur, ', ') .. '},')
end
mw.log('}')
mw.log('return p')

Étape 3 : placer le code suivant dans la console et l'exécuter. Ce code va récupérer toutes les données souhaitées des capacités apparues lors de la huitième génération, le trier, puis afficher dans la console son résultat. Copier l'intégralité du résultat, hormis les erreurs éventuelles affichées en bas, puis coller le contenu dans la zone d'édition juste avant la dernière ligne return p, sans effacer ce qui était présent. Effacer la console.

local generation = 8
local generations = {'Huitième'}
local donnees = {'Type', 'Catégorie de capacité', 'Puissance', 'Précision', 'PP'}

local data = {}
local erreurs = ""
local capacites, nom, souspage, requete, reussite, i, nom_ancien, valeur
for _, generation_apparition in ipairs(generations) do
	capacites = mw.smw.ask('[[Génération de la capacité::' .. generation_apparition .. ' génération]]|limit=5000')
	for indice, resultat in ipairs(capacites) do
		nom = mw.ustring.gsub(resultat[1], '%[%[.-%|(.-)%]%]', '%1')
		souspage = nom .. '/Génération ' .. generation
		requete = mw.smw.ask('[[' .. souspage .. ']]|?' .. table.concat(donnees, '=|?') .. '=')
		reussite = true
		if requete == Nil then reussite = False
		else 
			i = 2
			while i <= #donnees + 1 do
				if requete[1][i] == Nil then reussite = False end
				i = i + 1
			end
		end
		if reussite == False then
			erreurs = erreurs .. 'Info non trouvée pour ' .. nom .. '\n'
		else
			nom_ancien = mw.ustring.gsub(mw.ustring.gsub(requete[1][1], '%[%[.-/Génération ' .. generation .. '%|(.-)/Génération ' .. generation .. '%]%]', '%1'), ' %(capacité%)', '')
			valeur = {'"' .. nom_ancien .. '"'}
			i = 2
			while i <= #donnees + 1 do
				if i == 2 or i == 3 or i == 7 then table.insert(valeur, '"' .. requete[1][i] .. '"')
				else 
					if i == 4 and (nom == "Abîme" or nom == "Empal'Korne" or nom == "Glaciation" or nom == "Guillotine") then table.insert(valeur, '"[[OHKO]]"')
					else table.insert(valeur, requete[1][i])
					end
				end
				i = i +1
			end
			table.insert(data, valeur)
		end
	end
end

local enleverAccents = require("Module:Ressources/enleverAccents")
local function comp(valeur1, valeur2)
	return enleverAccents(valeur1[1]) < enleverAccents(valeur2[1])
end
table.sort(data, comp)

mw.log('p.data2 = {')
for _, valeur in ipairs(data) do
	mw.log('	{' .. table.concat(valeur, ', ') .. '},')
end
mw.log('}')
mw.log('')
mw.log(erreurs)

Étape 4 : placer le code suivant dans la console et l'exécuter. Le rendu est le tableau correctement trié et présenté comme voulu.

local data = p.data
local data2 = p.data2
local enleverAccents = require("Module:Ressources/enleverAccents")
local function comp(valeur1, valeur2)
	return enleverAccents(valeur1[1]) < enleverAccents(valeur2[1])
end

local i = 1
local j = 1
while data2[j] ~= nil do
	while data[i] ~= nil and comp(data[i], data2[j]) do
		i = i + 1
	end
	table.insert(data, i, data2[j])
	i = i + 1
	j = j + 1
end

local donnees = {'Type', 'Catégorie de capacité', 'Puissance', 'Précision', 'PP'}
mw.log('-- ' .. table.concat(donnees, ', '))
mw.log('return {')
for _, valeur in ipairs(p.data) do
	local i = 1
	while i <= #donnees do
		if i == 1 or i == 2 or i == 3 or i == 7 or (i == 4 and valeur[i] == "[[OHKO]]") then valeur[i] = '"' .. valeur[i] .. '"' end
		i = i + 1
	end
	mw.log('	[' .. valeur[1] .. '] = {' .. table.concat(valeur, ', ', 2) .. '},')
end
mw.log('}')