[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Question on reading config files
- From: meino.cramer@...
- Date: Tue, 17 Jul 2012 05:04:12 +0200
Coda Highland <chighland@gmail.com> [12-07-16 20:56]:
> On Mon, Jul 16, 2012 at 10:59 AM, <meino.cramer@gmx.de> wrote:
> > Paul K <paulclinger@yahoo.com> [12-07-16 18:02]:
> >> HI Meino,
> >>
> >> > for key, value in ipairs{...} do
> >> > -- something meaningful here
> >> > end
> >>
> >> You should be using pairs instead of ipairs and you probably get
> >> exactly what you are looking for: 'key' will get values 'first' and
> >> 'second' (with 'value' being the corresponding table value), which you
> >> can then handle in your script any way you want.
> >>
> >> Paul.
> >>
> >> On Sun, Jul 15, 2012 at 8:40 PM, <meino.cramer@gmx.de> wrote:
> >> > Hi,
> >> >
> >> > Currently I am programming a piece of code what will become a reader
> >> > and handler for config files. The starting point was an example code
> >> > from "Programming in Lua". The final code should read a config file
> >> > with different profiles to setup and handle serial ports so this is
> >> > only an example.
> >> >
> >> > My config file has this layout currently:
> >> >
> >> > profile{
> >> > first={
> >> > author="Donald E. Knuth",
> >> > title= "Literate Programming",
> >> > press= "CSLI",
> >> > year= 1992
> >> > },
> >> > second={
> >> > author= "Jon Bentley",
> >> > title= "More Programming Pearls",
> >> > press= "Addison-Wesley",
> >> > year= 1990
> >> > }
> >> > }
> >> >
> >> > where "first" and "second" are names of different profiles, which the
> >> > user is allowed to name as s/he wants.
> >> >
> >> > A sketch of a snippet of code which reads the config file looks like
> >> > this:
> >> >
> >> >
> >> >
> >> > #! /usr/bin/lua
> >> > local count = 0
> >> > function profile (...)
> >> >
> >> > for key, value in ipairs{...} do
> >> > -- something meaningful here
> >> > end
> >> >
> >> > end
> >> >
> >> > function main()
> >> > dofile("data")
> >> > end
> >> >
> >> > main()
> >> >
> >> > My question is: Is it possible to determine the names of the profiles
> >> > (in my example "first" and "second") from inside the code without
> >> > further input from the user land?
> >> >
> >> > Thank you very much in advance for any help!
> >> >
> >> > Best regards,
> >> > mcc
> >> >
> >> >
> >> >
> >> >
> >>
> >
> > Hi,
> >
> > thanks for the replies! :)
> >
> > Unfortunately apparently I am still doing something wrong...
> >
> > This is the contents of the config file. The file is called 'data':
> >
> >
> > profile{
> > first={
> > author="Donald E. Knuth",
> > title= "Literate Programming",
> > press= "CSLI",
> > year= 1992
> > },
> > second={
> > author= "Jon Bentley",
> > title= "More Programming Pearls",
> > press= "Addison-Wesley",
> > year= 1990
> > }
> > }
> >
> >
> > This is the program, called 'reader.lua':
> >
> >
> > #! /usr/bin/lua
> >
> > function profile (...)
> > for key, value in pairs{...} do
> > print( key )
> > print( value )
> > end
> >
> > end
> >
> > function main()
> > dofile("data")
> > end
> >
> > main()
> >
> >
> > and this is the output it produces:
> >
> > 1
> > table: 0x23420e0
> >
> >
> > (all listings have been indented by four spaces for readablity
> > reasons)
> >
> > What do I have to change to get the table names ('first",'second')
> > instead of the adress of the table 'profile" (as it seems, since it
> > is only one adress printed) ?
> >
> > Thank you very much for your help and your patience with lua newbie ;)
> >
> > Best regards,
> > mcc
>
> The code is working exactly how you've written it. ;) Remember that
> the parameter to profile() is itself a table.
>
> Consider this:
>
> function profile (cfg)
> for key, value in pairs(cfg) do
> print( key )
> print( value )
> end
> end
>
> /s/ Adam
>
Hi Coda,
yes, I see, that I get only the refrence to the first table...but
again my question:
> > What do I have to change to get the table names ('first",'second')
> > instead of the adress of the table 'profile" (as it seems, since it
> > is only one adress printed) ?
Thank you very much for any help in advance!
Best regards,
mcc