Lector de archivos de configuración al estilo Unix escrito en Lua usando tabla de validation/configuración

Esto viene siendo una interesante actualización de un post anterior. En este caso agrego una nueva función parecida a la anterior, sólo que esta vez se pasa además una tabla de validación/configuración para que sólo se rescaten del archivo los valores que están en la tabla. Además si hay elementos de la tabla que no están presentes en el archivo, estos se mantienen.

Supongamos que tienes el siguientes archivo de configuración:

 msg = "Hello world!"    # This string is correct
 bad1 = Hello world!"    # This string isn't between two tokens
 bad2 = Hello world!     # The " token is not present

trys = 1225             # This is a numeric configuration

pi = 3.1415             # Float
 e = 2.71e-4             # Cientific notation
 bad3 = 12c              # The error is mix numbers and not valid text

number = 1              # If you repeat some parameter
 number = 2              # the value that get is the last
 number = 3              # appear in the file. In this case 3.

Entonces, vamos a un ejemplo de uso:

 dofile("config_reader.lua")
 function Print_Table (t)
 for k, v in pairs (t) do print("\t"..tostring(k).."\t|\t"..tostring(v)) end
 end
 -- Load default value table
 config = {
 msg = "Hello",
 trys = 12,
 pi = 3.14,
 e = 0,-- The e parameter is not define
 number = 0,
 present = true
 }
 print("Configuration default:")
 Print_Table (config)
 -- Now load the configuration from file
 config = Get_Valid_Config ("test.cnf", config)
 print("Configuration from file:")
 Print_Table (config)

La salida sería:

 Configuration default:
 number | 0
 msg | Hello
 trys | 12
 pi | 3.14
 present | true
 e | 0
 Configuration from file:
 number | 3
 msg | Hello world!
 trys | 1225
 pi | 3.1415
 present | true
 e | 0.000271

Puedes ver estas funcione en github.

Saludos

Happy Hacking!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s