package com.macfaq.io; import java.io.*; public class SourceWriter extends FilterWriter { public SourceWriter(Writer out) { super(out); } public void write(char[] text, int offset, int length) throws IOException { for (int i = offset; i < offset+length; i++) { this.write(text[i]); } } public void write(String s, int offset, int length) throws IOException { for (int i = offset; i < offset+length; i++) { this.write(s.charAt(i)); } } public void write(int c) throws IOException { // we have to escape the backslashes below if (c == '\\') out.write("\\u005C"); else if (c < 128) out.write(c); else { String s = Integer.toHexString(c); // pad with leading zeroes if necessary if (c < 256) s = "00" + s; else if (c < 4096) s = "0" + s; out.write("\\u"); out.write(s); } } }