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