Slightly modified from what you so amusingly called "my CoolTools.ctfe":
ctSlice (not to be confused with the [] array slicing functionality) "slices" a
string in two at a marker, returning the text before the marker and removing it
(and the marker) from the input text.
The ct prefix is handy for differentiating between std.metastrings and
std.string functions - one may often want to import both ..
string ctSlice(ref string what, string where) {
auto loc = what.ctFind(where);
if (loc == -1) {
auto res = what;
what = null;
return res;
}
auto res = what[0 .. loc];
what = what[loc+where.length .. $];
return res;
}
When is this useful?
For instance, when writing a compile-time enum, you may want to use a syntax of
the form "EnumName: Entries"
In that case, you could write `string name = input.ctSlice(":"); '