Discussion:
compile time configurations
Freddy via Digitalmars-d
2014-10-08 22:34:36 UTC
Permalink
I recently thought of the idea of using string imports for
compile time configuration.
Something like this
---
import std.stdio;
import std.conv;
import std.range;
import std.algorithm;

string getVar(string fname,string var)(){
foreach(property;import(fname).splitter('\n')){
auto varname=property[0..property.countUntil("=")];
if(var==varname){
return property[property.countUntil("=")+1..$];
}
}
assert(0, "unable to find property");
}

enum dimisions=getVar!("shapes","dimisions").to!uint;

void main()
{
writeln("There are ",dimisions," dimisions");
}
---
Where you add your config dir(that contains "shapes") file to
dub's stringImportPaths".
How do you guys feel about this? Should we use something like
json for config files?
Marco Leise via Digitalmars-d
2014-10-10 07:02:24 UTC
Permalink
Am Wed, 08 Oct 2014 22:34:36 +0000
Post by Freddy via Digitalmars-d
I recently thought of the idea of using string imports for
compile time configuration.
Something like this
---
import std.stdio;
import std.conv;
import std.range;
import std.algorithm;
string getVar(string fname,string var)(){
foreach(property;import(fname).splitter('\n')){
auto varname=property[0..property.countUntil("=")];
if(var==varname){
return property[property.countUntil("=")+1..$];
}
}
assert(0, "unable to find property");
}
enum dimisions=getVar!("shapes","dimisions").to!uint;
void main()
{
writeln("There are ",dimisions," dimisions");
}
---
Where you add your config dir(that contains "shapes") file to
dub's stringImportPaths".
How do you guys feel about this? Should we use something like
json for config files?
I did something similar a while back. It parsed a .ini that
contained default values and created a statically typed runtime
parser for the actual .ini file from it. It was fun, to see
that you can do that with D.
--
Marco
Uranuz via Digitalmars-d
2014-10-11 09:07:41 UTC
Permalink
Post by Marco Leise via Digitalmars-d
I did something similar a while back. It parsed a .ini that
contained default values and created a statically typed runtime
parser for the actual .ini file from it. It was fun, to see
that you can do that with D.
Yes. I use import('filename') to configure my application too. I
have config.json, where I store standard application's file
paths, options and so on. It's very handy compiler's feature

Continue reading on narkive:
Loading...