Module:Réserve
Ce module est une réserve de fonctions pouvant être utiles dans d'autres modules.
- La fonction decrochette supprime les doubles crochets ouvrant et fermant d'un lien. Très utile dans un module où l'un des paramètres est donné sous forme de lien. La fonction supprime aussi les espaces superflus et le titre de remplacement.
- La fonction nettoie supprime les éventuels espaces en début et en fin d'un chaîne de caractères.
- La fonction lit extrait le contenu d'une page. Elle s'utilise sous la forme : texte = lit(nom de la page). On retrouve alors dans la variable texte la totalité du contenu de la page.
Fonction à utiliser avec modération car très gourmande en temps d’exécution |
- La fonction model permet d'extraire, d'une page, un paramètre d'un modèle. Elle s'utilise sous la forme : texte = model(nom de la page, nom du modèle, paramètre souhaité).
Fonction à utiliser avec modération car très gourmande en temps d’exécution |
- La fonction maj met une majuscule à une phrase passé en paramètre et met le reste de la phrase en minuscule.
- La fonction p.test sert à tester le bon fonctionnement des fonctions de ce module.
local p = {}
function decrochette(item)
local debut,fin = 1,mw.ustring.len(item)
while mw.ustring.sub(item,debut,debut) == " " do -- Pour supprimer les espaces avant le double crochet ouvrant
debut = debut+1
end
debut = debut+2
while mw.ustring.sub(item,debut,debut) == " " do -- Pour supprimer les espaces après le double crochet ouvrant
debut = debut + 1
end
while mw.ustring.sub(item,fin,fin) == " " do -- Pour suppimer les espaces après le double crochet fermant
fin = fin - 1
end
fin = fin-2
while mw.ustring.sub(item,fin,fin) == " " do -- Pour suppimer les espace avant le double crochet fermant
fin = fin - 1
end
item = mw.ustring.sub(item,debut,fin) -- Suppression des doubles crochets et des espaces superflus
fin = mw.ustring.find(item,"|") -- Y a t'il modification du titre de la page
if fin then
item = mw.ustring.sub(item,1,fin-1) -- si oui, suppression de la modification
end
return item
end
function nettoie(item)
local debut,fin = 1,mw.ustring.len(item)
while mw.ustring.sub(item,debut,debut) == " " do -- Pour supprimer les espaces au début
debut = debut+1
end
while mw.ustring.sub(item,fin,fin) == " " do -- Pour suppimer les espaces à la fin
fin = fin - 1
end
return mw.ustring.sub(item,debut,fin) -- c’est propre !
end
function lit(page)
local title = mw.title.new(page)
local texte
if title ~= nil then
texte = title.getContent(title)
end
return texte
end
function model(page,mod,item)
local texte = lit(page)
local repere = 1
local taille = 1
if texte ~= nil then
repere = mw.ustring.find(texte,mod) -- Recherche la position du modèle
if tonumber(item) then
repere = mw.ustring.find(texte,"| "..item,repere) -- Dans le modèle recherche l’article indexé par un nombre
if repere then repere = repere+2 end
else
repere = mw.ustring.find(texte,item,repere) -- Dans le modèle recherche l'article
end
if repere then
taille = mw.ustring.find(texte,'\
',repere) -- Puis recherche le premier retour chariot qui suit
texte = mw.ustring.sub(texte,repere,taille-1) -- L'article est isolé
taille = taille - repere -- Calcul de la taille de l'article
repere = mw.ustring.find(texte,"=") -- Repère le =
repere = repere+1 -- Et regarde ce qu’il y a après
while mw.ustring.sub(texte,repere,repere) == " " do -- Cherche le début du paramètre
repere = repere+1
end
while mw.ustring.sub(texte,taille,taille) == " " do -- Pour supprimer les éventuel espace en fin de ligne
taille = taille-1
end
texte = mw.ustring.sub(texte,repere,taille) -- isole le paramètre
else
texte = repere
end
end
return texte
end
function maj(phrase)
local debut = string.sub(phrase,1,1) --Extrait la première lettre de la phrase
local fin = string.sub(phrase,2) --Extrait la fin de la phrase (sans la première lettre)
return string.upper(debut)..string.lower(fin) -- Reconstruit la phrase en mettant la première lettre en majuscule et le reste en minuscule
end
function p.test(frame)
local reponse = ""
tableau = model(frame.args[1],frame.args[2],frame.args[3])
return tableau
end
return p