module antlr.v4.runtime.misc.Utils; import std.array; import std.traits; import std.conv; // Class Utils /** * TODO add class description */ class Utils { /** * @uml * @safe * @nothrow */ public static size_t rank(T)(T e) @safe nothrow { foreach (i, member; EnumMembers!T) { if (e == member) return cast(int)(i); } assert(0, "Not an enum member"); } public static string escapeWhitespace(string s, bool escapeSpaces) { auto buf = appender!string; foreach (char c; s) { if (c==' ' && escapeSpaces) buf.put('\u00B7'); else if ( c=='\t' ) buf.put("\\t"); else if ( c=='\n' ) buf.put("\\n"); else if ( c=='\r' ) buf.put("\\r"); else buf.put(c); } return buf.data; } }