At this point you may as well just use JSON.

On Feb 16, 2012, at 2:29 PM, Manu wrote:

> I wonder if there is a problem with a 'standard' ini parser, in that ini 
> files are not really very standard.
> I have seen a lot of ini files with scope (also also use this in some of my 
> own apps), will I be able to parse these with your parser?
> 
> [section]
> {
>   key = value
>   key2 = value
> 
>   [subsection]
>   {
>     subkey = value
>   }
> }
> 
> ?
> 
> I notice your interesting delimiters too, I've never seen anything like that 
> in an ini file before, where did you see that? What makes it standard?
> I might like to use something like that if I had thought it was a normal 
> thing to use in an ini file...
> 
> On 16 February 2012 22:50, Robik <[email protected]> wrote:
> Greetings.
> 
> Recently, I've been working on INI parser in D. The main goals were to keep 
> code easy and well documented. Suggestions are really welcome(main reason of 
> this thread) because it needs polishing and stuff.
> 
> It provides simple interface for operating on parsed file, including useful 
> features like section inheriting and variable lookups. Here is simple example 
> taken from README with little modifications:
> import std.stdio;
>   void main()
>   {
>        // Hard code the contents
>        string c = "
>   # defaults
>   [def]
>   name1:value1
>   name2:value2
> 
>   ; override defaults
>   [foo : def]
>   name1=Name1 from foo. Lookup for def.name2: %name2%";
> 
>       // create parser instance
>       auto iniParser = new IniParser();
> 
>       // Set ini structure details; can be ommited
>       iniParser.commentChars = [';', '#'];
>       iniParser.delimChars = ['=', ':'];
> 
> 
>       // parse
>       auto ini = iniParser.parse(c);
> 
>       // write foo.name1 value
>       writeln(ini.getSection("foo")["name1"].value);
>   }
> 
> You can also define parsing details, like commentCharacters* and others. As 
> for the keys, structure is used rather than associative arrays. There's also 
> bug** that does not allow chaining with opCall which I hope will be fixed :).
> 
> IniStructure (result of parsing) overloads some basic operators allowing you 
> to looping through it and accessing data with opIndex and opCall.
> 
> Feel free to share suggestions, changes, help me make it better :).
> 
> Repo: https://github.com/robik/DIni
> * https://github.com/robik/DIni/blob/master/src/dini.d#L400
> ** http://d.puremagic.com/issues/show_bug.cgi?id=7210
> 

Reply via email to