+ write((int) '\n');\r
+ }\r
+\r
+ @Override\r
+ public void write(String str, int off, int len) {\r
+ int finalLength = Math.min(str.length(), off + len);\r
+ for (int i = off; i < finalLength; ++i) {\r
+ write((int) str.charAt(i));\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public void write(int b) {\r
+ if (b == '\n') {\r
+ addIndent = true;\r
+ col = 0;\r
+ } else if (addIndent) {\r
+ addIndent = false;\r
+ toIndent();\r
+ } else {\r
+ ++col;\r
+ }\r
+ super.write(b);\r
+ }\r
+\r
+ @Override\r
+ public void write(char[] buf, int off, int len) {\r
+ for (int i = 0; i < len; ++i) {\r
+ write(buf[i] + off);\r
+ }\r
+ }\r
+\r
+ public void setIndent(int size) {\r
+ indent = size;\r
+ }\r
+\r
+ public void inc() {\r
+ ++indent;\r
+ }\r
+\r
+ public void dec() {\r
+ --indent;\r
+ }\r
+\r
+ public void toCol(int idx) {\r
+ while (idx > col++) {\r
+ super.write((int) ' ');\r
+ }\r
+ }\r
+\r
+ public int getIndent() {\r
+ return indent;\r
+ }\r
+\r
+ public void toIndent() {\r
+ int end = indent * INDENT_MULTIPLIER;\r
+ for (int i = 0; i < end; ++i) {\r
+ super.write((int) ' ');\r
+ }\r
+ col = end;\r