Ce module sert d'exemple dans la leçon Initiation au Lua avec Scribunto. son utilisation est décrite en détail dans celle-ci et, par conséquent, ce module ne doit pas être modifié sans tenir compte de la leçon.


local p = {}

function f(x)
	return x^2
end

function p.toutype()
	local reponse = " "
	reponse = reponse..type(cameleon).."  "  -- La variable cameleon n'a pas été affectée donc la fonction type devrait retourner "nil"
	cameleon = 7
	reponse = reponse..type(cameleon).."  "
	cameleon = "mian mian"
	reponse = reponse..type(cameleon).."  "
	cameleon = true
	reponse = reponse..type(cameleon).."  "
	cameleon = p                       -- N'oublions pas que p a été déclaré comme étant une table en début de module
	reponse = reponse..type(cameleon).."  "
	cameleon = f                       -- f est la fonction défini un peu plus haut et qui élève un nombre au carré
	reponse = reponse..type(cameleon)
	return reponse
end

function p.nombre(frame)
	local n = tonumber(frame.args[1])
	if n == nil then
		return "Je n'ai pas réussi à convertir votre chaine de caractères en nombre"
	else
		return "Vous avez bien rentré un nombre"
	end
end

function p.verschaine()
	local reponse = " "
	reponse = reponse..tostring(cameleon).."  "  -- La variable cameleon n'a pas été affectée donc la fonction type devrait retourner "nil"
	cameleon = 7
	reponse = reponse..tostring(cameleon).."  "
	cameleon = "mian mian"
	reponse = reponse..tostring(cameleon).."  "
	cameleon = true
	reponse = reponse..tostring(cameleon).."  "
	cameleon = p                       -- N'oublions pas que p a été déclaré comme étant une table en début de module
	reponse = reponse..tostring(cameleon).."  "
	cameleon = f                       -- f est la fonction défini un peu plus haut et qui élève un nombre au carré
	reponse = reponse..tostring(cameleon)
	return reponse
end

local Categorie = { ["Prénom"] = "Christine", ["Mois"] = "Avril", ["Métier"] = "Boulanger", ["Poisson"] = "Truite", ["Métal"] = "Argent", ["Planète"] = "Saturne", ["Instrument"] = "Piano"}

function p.listecle()
	local reponse = " "
	local suivant, objet
	for index = 1, 7 do
		suivant,objet = next(Categorie,suivant)
		reponse = reponse.."<br /> "..suivant.." correspond à "..objet
	end
	return reponse
end

function p.yatil(frame)
	local suivant,objet
	local trouve = false
	repeat
		suivant,objet = next(Categorie,suivant)  --Cherche la clé suivante et la met dans suivant
		if objet == frame.args[1] then trouve = true end
	until suivant == nil or trouve -- On tourne dans la boucle jusqu'à ce que toute la table ait été parcourue ou jusqu'à ce qu'on ait trouvé
	if trouve then
		return "Le mot figure dans la table"
	else
		return "Le mot ne figure pas dans la table"
	end
end

local souk = {"flute", "pipo", "manche à balaie", "serpière", "jeu de cartes", "coton tige", "tourne vis", "rateau", "stylo", "poupée"}

function p.description()
	local reponse = " "
	for index, objet in ipairs(souk) do
		reponse = reponse.."<br />à la clé numéro "..index.." se trouve l’objet "..objet.."."
	end
	return reponse
end

local fouillis = {["Nourriture"] = "Fromage", ["Boisson"] = "Limonade", ["Bestiole"] = "Cafard", ["Couvert"] = "Fourchette", ["Truc"] = "Machin chose"}

function p.farfouille()
	local reponse = " "
	for index, objet in pairs(fouillis) do
		reponse = reponse.."<br />à la clé "..index.." se trouve l’objet "..objet.."."
	end
	return reponse
end

function i(x)
	error("turlututu chapeau pointu",3)
end

function h(x)
	i(x)
end

function g(x)
	h(x)
end

function p.erreur()
	g(2)
end

function plouf(x)
	local tab ={6,8}
	return x + tab
end

function p.crash()
	local a,b = pcall(plouf,3)
	if a == false then
		return b
	else
		return "Aucun probléme ! La fonction a retourné"..b
	end
end

return p