Créer ses propres librairies

Première version

Créez un fichier nommé mymodule.lua puis mettez-y le code suivant :

1
2
3
4
5
6
7
local mymodule = {}

function mymodule.foo()
  print("Hello world!")
end

return mymodule

Maintenant, pour pouvoir utiliser notre nouvelle lib dans un autre fichier, il suffit de l’appeler comme ceci :

1
2
3
4
5
monModule = require "mymodule"
monModule.foo()

-- output:
--  Hello world!

Si vous mettez votre lib dans un répertoire ou plusieurs répertoire(s), il faudra l’appeler comme ceci :

1
2
3
4
5
monModule = require "monRep.unAutreRep.mymodule"
monModule.foo()

-- output:
--  Hello world!

Exemple complet

Fichier dans le répertoire fmt: fmt/printf.lua

1
2
3
4
5
6
7
local fmt = {}

function fmt.printf(str, ...)
  io.write(string.format(str, ...))
end

return fmt

Fichier utilisant fmt/printf.lua :

1
2
3
4
5
6
7
local fmt = require "fmt.printf"

local name = "Julien"
fmt.printf("Bonjour %s", name)

-- output:
--  Bonjour Julien

En Lua, le séparateur est un . et non un "/" ou un ""

Deuxième version

C’est celle que je préfère car je n’ai pas besoin de taper à chaque fois fmt.printf. Elle est donc plus canonique. Comme la première version, elle a ses avantages et ses inconvénients.

Exemple complet

Créez un fichier fileExists.lua et mettez-y le code suivant :

1
2
3
4
5
6
local function fileExists(filename)
  local f = io.open( filename, 'r' )
  if f ~= nil then io.close( f ) return true else return false end
end

return fileExists

Maintenant, créez un fichier test.lua avec le code suivant :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
local fileExists = require( 'fileExists' )

local response = fileExists( 'fileExists.lua' )
print( response )

response = fileExists( 'fichier_qui_nexiste_pas.lua' )
print( response )
-- output:
--  true
--  false