variantconfig ~master
A key/value config file format
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
DEPRECATED
I don't use D much nowadays and as such making this project deprecated.
Description
VariantConfig is a key/value config file format that uses an associative array to store key/value pairs.
Examples
string text = "
aBool=true
decimal = 3443.443
number=12071
#Here is a comment
sentence=This is a really long sentence to test for a really long value string!
time=12:04
[section]
groupSection=is really cool if this works!
japan=true
babymetal=the one
[another]
#And another comment!
world=hello
japan=false
";
VariantConfig config;
immutable bool loaded = config.loadString(text);
assert(loaded, "Failed to load string!");
assert(config.containsGroup("section"));
config.removeGroup("section");
assert(config.containsGroup("section") == false);
assert(config.get("aBool", true).coerce!bool == true);
assert(config.asBool("aBool")); // Syntactic sugar
assert(config["aBool"].coerce!bool == true); // Also works but rather awkward
assert(config.coerce!bool("aBool") == true); // Also works and more natural
assert(config.contains("time"));
immutable auto number = config["number"];
assert(number == 12_071);
assert(config["decimal"] == 3443.443);
assert(config.contains("another.world"));
assert(config["another.world"] == "hello");
config["another.japan"] = true;
assert(config["another.japan"] == true);
config.remove("another.world");
assert(config.contains("another.world") == false);
assert(config.contains("anothers", "world") == false);
assert(config.contains("number"));
config.remove("number");
assert(config.contains("number") == false);
// Tests for nonexistent keys
assert(config.asString("nonexistent", "Value doesn't exist!") == "Value doesn't exist!");
config["nonexistent"] = "The value now exists!!!";
assert(config.asString("nonexistent", "The value now exists!!!") == "The value now exists!!!");
auto group = config.getGroup("another");
foreach(value; group)
{
assert(value.key == "japan");
assert(value.value == true);
}
config.set("aBool", false);
assert(config["aBool"] == false);
debug config.save();
config["aBool"] = true;
assert(config["aBool"] == true);
assert(config["aBool"].toString == "true");
assert(config.get!int("numberGroup", "numberValue", 1234) == 1234);
immutable string customFileName = "custom-config-format.dat";
debug config.save(customFileName);
VariantConfig configLoadTest;
bool isLoadedTest = configLoadTest.loadFile("doesnt-exist.dat");
assert(isLoadedTest == false);
isLoadedTest = configLoadTest.loadFile(customFileName);
assert(isLoadedTest == true);
string noEqualSign = "
equal=sign
time=12:04
This is a really long sentence to test for a really long value string!
";
immutable bool equalSignValue = config.loadString(noEqualSign);
assert(equalSignValue == false);
auto groups = config.getGroups();
writeln("Listing groups: ");
writeln;
foreach(currGroup; groups)
{
writeln(currGroup);
}
string invalidGroup = "
[first]
equal=sign
time=12:04
[second
another=key value is here
";
immutable bool invalidGroupValue = config.loadString(invalidGroup);
assert(invalidGroupValue == false);
string emptyString;
immutable bool emptyLoad = config.loadString(emptyString);
assert(emptyLoad == false);
- ~master released 3 years ago
- Soulsbane/VariantConfig
- github.com/Soulsbane/variantconfig
- BSL-1.0
- Copyright © 2015, Paul Crane
- Authors:
- Dependencies:
- none
- Versions:
-
1.1.5 2015-Nov-06 1.1.4 2015-Oct-16 1.1.3 2015-Jul-26 1.1.2 2015-Jul-20 1.1.1 2015-Jul-18 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
0 downloads this month
-
0 downloads total
-
- Score:
- 0.9
- Short URL:
- variantconfig.dub.pm