We have CTFE regex wich creates an optimized regex engine at compile time. I would want to expand on that and make the generated machine CTFE as well. I think the only thing that is stopping this from working is the use of malloc as seen at https://github.com/D-Programming-Language/phobos/blob/cb044b02aa3abd0bddc5e48a91faebfd146cab3e/std/regex/package.d#L565 What can replace malloc that can run on compile time and won't make it slower at run time?

Here is an example of what I would want to work:

unittest {
    enum hello_world = camelCaseToUnderscore("helloWorld");
    assertEqual(hello_world, "hello_world");
}

private string camelCaseToUnderscore(string input){
    import std.regex;
    auto ctr = ctRegex!(`([a-z])([A-Z])`);
    auto replaceString = "$1_$2";
    return replaceAll(input, ctr, replaceString).toLower();
}

Reply via email to