package org.json;
import java.io.IOException;
import java.io.Writer;
public class QuotedWriter extends Writer {
private Writer writer;
private char b = 0;
public QuotedWriter(Writer wrapped) {
this.writer = wrapped;
}
@Override
public void write(char[] cbuf, int off, int len) throws IOException {
char c = 0;
String t;
for (int i = off; i < len; i += 1) {
if (c != 0) {
b = c;
}
c = cbuf[i];
switch (c) {
case '\\':
case '"':
writer.append('\\');
writer.append(c);
break;
case '/':
if (b == '<') {
writer.append('\\');
}
writer.append(c);
break;
case '\b':
writer.append("\\b");
break;
case '\t':
writer.append("\\t");
break;
case '\n':
writer.append("\\n");
break;
case '\f':
writer.append("\\f");
break;
case '\r':
writer.append("\\r");
break;
default:
if (c < ' ' || (c >= '\u0080' && c < '\u00a0') || (c >= '\u2000' && c < '\u2100')) {
t = "000" + Integer.toHexString(c);
writer.append("\\u" + t.substring(t.length() - 4));
} else {
writer.append(c);
}
}
}
}
@Override
public void flush() throws IOException {
writer.flush();
}
@Override
public void close() throws IOException {
writer.close();
}
}