package org.anodyneos.xpImpl.util;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Writer;
public class CodeWriter extends PrintWriter {
public static final int DEFAULT_INDENT_AMOUNT = 4;
private int indentLevel = 0;
private int indentAmount = DEFAULT_INDENT_AMOUNT;
// constructors
public CodeWriter(PrintWriter out) {
super(out);
}
public CodeWriter(OutputStream out) {
super(out);
}
public CodeWriter(OutputStream out, boolean autoFlush) {
super(out, autoFlush);
}
public CodeWriter(Writer out) {
super(out);
}
public CodeWriter(Writer out, boolean autoFlush) {
super(out, autoFlush);
}
// indent
public CodeWriter indentPlus() {
indentLevel += 1;
return this;
}
public CodeWriter indentMinus() {
if (indentLevel > 0) indentLevel -= 1;
return this;
}
public CodeWriter printIndent() {
for(int i = 0; i < indentLevel * indentAmount; i++) {
print(' ');
}
return this;
}
// util
public CodeWriter endBlock() {
indentMinus();
printIndent().println("}");
return this;
}
}