Thread overview
Is there any preprocessor scripting language?
Aug 22, 2014
MarisaLovesUsAll
Aug 22, 2014
Kagamin
Aug 22, 2014
Kagamin
Aug 22, 2014
MarisaLovesUsAll
August 22, 2014
I just want to write something like this:

#ololo script
    foreach(child; findAllChildrens())
    {
        child.insert(
            static void doABarrelRoll() { }
        );
    }
#end

Templates/mixins is not enough for me... maybe because of hands.dll error :)
August 22, 2014
You can try D parsing libraries: http://forum.dlang.org/thread/jqwvudiwgiuprqcuaaoy@forum.dlang.org they're believed to enable writing refactoring scripts.
August 22, 2014
Example:

import std.lexer;
import std.d.lexer;
import std.array;
import std.stdio;

void main(string[] args)
{
	File input = File(args[1]);
	File output = args.length > 2 ? File(args[2]) : stdout;
	ubyte[] inputBytes = uninitializedArray!(ubyte[])(input.size);
	input.rawRead(inputBytes);
	StringCache cache = StringCache(StringCache.defaultBucketCount);
	LexerConfig config;
	config.fileName = args[1];
	config.stringBehavior = StringBehavior.source;
	auto tokens = byToken(inputBytes, config, &cache).array;
	foreach (i; 0 .. tokens.length)
	{
		switch (tokens[i].type)
		{
		case tok!"catch":
			if (i + 1 < tokens.length && tokens[i + 1].type != tok!"(")
			{
				output.write("catch (Throwable)");
				break;
			}
			else
				goto default;
		default:
			output.write(tokens[i].text is null
				? str(tokens[i].type)
				: tokens[i].text);
			break;
		}
	}
}
August 22, 2014
On Friday, 22 August 2014 at 13:33:12 UTC, Kagamin wrote:
> You can try D parsing libraries: http://forum.dlang.org/thread/jqwvudiwgiuprqcuaaoy@forum.dlang.org they're believed to enable writing refactoring scripts.

Thanks a lot! It will be useful.