just a little hack after reading the output of the compiler...
authorbdemsky <bdemsky>
Mon, 22 Nov 2010 22:06:39 +0000 (22:06 +0000)
committerbdemsky <bdemsky>
Mon, 22 Nov 2010 22:06:39 +0000 (22:06 +0000)
Robust/src/Util/CodePrinter.java [new file with mode: 0644]

diff --git a/Robust/src/Util/CodePrinter.java b/Robust/src/Util/CodePrinter.java
new file mode 100644 (file)
index 0000000..046589b
--- /dev/null
@@ -0,0 +1,155 @@
+package Util;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.io.OutputStream;
+
+public class CodePrinter extends PrintWriter {
+  int braceCount=0;
+  StringBuffer sb=new StringBuffer();
+  public CodePrinter(Writer w) {
+    super(w);
+  }
+
+  public CodePrinter(Writer w, boolean af) {
+    super(w,af);
+  }
+
+  public CodePrinter(OutputStream w) {
+    super(w);
+  }
+
+  public CodePrinter(OutputStream w, boolean af) {
+    super(w,af);
+  }
+  
+  StringBuffer genSpacing() {
+    StringBuffer sb=new StringBuffer();
+    for(int i=0;i<braceCount;i++)
+      sb.append("  ");
+    return sb;
+  }
+
+  public void println() {
+    addString("\n");
+  }
+
+  public void println(boolean x) {
+    addString(x+"\n");
+  }
+
+  public void println(char x) {
+    addString(x+"\n");
+  }
+
+  public void println(char[] x) {
+    addString(x+"\n");
+  }
+
+  public void println(double x) {
+    addString(x+"\n");
+  }
+
+  public void println(float x) {
+    addString(x+"\n");
+  }
+
+  public void println(int x) {
+    addString(x+"\n");
+  }
+
+  public void println(Object x) {
+    addString(x+"\n");
+  }
+
+  public void println(String x) {
+    addString(x+"\n");
+  }
+
+  public void print(boolean x) {
+    addString(x+"\n");
+  }
+
+  public void print(char x) {
+    addString(String.valueOf(x));
+  }
+
+  public void print(char[] x) {
+    addString(String.valueOf(x));
+  }
+
+  public void print(double x) {
+    addString(String.valueOf(x));
+  }
+
+  public void print(float x) {
+    addString(String.valueOf(x));
+  }
+
+  public void print(int x) {
+    addString(String.valueOf(x));
+  }
+
+  public void print(Object x) {
+    addString(String.valueOf(x));
+  }
+
+  public void print(String x) {
+    addString(x);
+  }
+
+  public void write(String x) {
+    addString(x);
+  }
+
+  public void write(char[] x) {
+    addString(new String(x));
+  }
+
+  public void addString(String str) {
+    char[] string=str.toCharArray();
+    int lastcr=0;
+    boolean seenChar=false;
+    for(int i=0;i<string.length;i++) {
+      char c=string[i];
+      switch(c) {
+      case '\n': {
+       sb.append(string, lastcr, i-lastcr);
+       super.println(sb.toString());
+       sb=genSpacing();
+       lastcr=i+1;//skip carriage return
+       seenChar=false;
+       break;
+      }
+      case '{':
+       braceCount++;
+       seenChar=true;
+       break;
+      case '}':
+       braceCount--;
+       seenChar=true;
+       break;
+      case ' ':
+       //skip leading whitespace
+       if (!seenChar)
+         lastcr=i+1;
+       break;
+      default:
+       seenChar=true;
+      }
+    }
+    if (lastcr!=(string.length-1)) {
+      //dump string
+      sb.append(string, lastcr, string.length-lastcr);
+    }
+  }
+
+  public void flush() {
+    super.println(sb.toString());
+    sb=genSpacing();
+  }
+
+  public void close() {
+    super.println(sb.toString());
+    super.close();
+  }
+}
\ No newline at end of file