Aller au contenu

Module:Réserve

Une page de Wikiversité, la communauté pédagogique libre.

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.

Panneau d’avertissement 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é).

Panneau d’avertissement 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