On 2012-02-16 21:50, Robik 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);
}
Why the need for ".value"? It would guess because opIndex returns IniKey
which both contains the key and the value. I would sugest you add a
"alias this" pointing to "value". Something like this.
struct IniKey
{
string name;
string value;
alias value this;
}
--
/Jacob Carlborg