compile time configurations

Marco Leise via Digitalmars-d digitalmars-d at puremagic.com
Fri Oct 10 00:02:24 PDT 2014


Am Wed, 08 Oct 2014 22:34:36 +0000
schrieb "Freddy" <Hexagonalstar64 at gmail.com>:

> 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



More information about the Digitalmars-d mailing list