[RFC] Ini parser
Robik
szadows at gmail.com
Thu Feb 16 12:50:22 PST 2012
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
More information about the Digitalmars-d
mailing list