in freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/TextUtil.java [31:75]
public static String jQuote(String s) {
if (s == null) {
return "null";
}
String s2;
int ln = s.length();
int next = 0;
int i = 0;
StringBuilder b = new StringBuilder(ln + 3);
b.append("\"");
while (i < ln) {
char c = s.charAt(i);
if (c == '\\' || c == '"' || c < 0x20) {
b.append(s.substring(next, i));
switch (c) {
case '\\':
b.append("\\\\"); break;
case '"':
b.append("\\\""); break;
case '\n':
b.append("\\n"); break;
case '\r':
b.append("\\r"); break;
case '\t':
b.append("\\t"); break;
case '\b':
b.append("\\b"); break;
case '\f':
b.append("\\f"); break;
default:
b.append("\\u0000");
int x = b.length();
s2 = Integer.toHexString(c);
b.replace(x - s2.length(), x, s2);
}
next = i + 1;
}
i++;
}
if (next < ln) {
b.append(s.substring(next));
}
b.append("\"");
return b.toString();
}