changeset 8:2da2b691345d

unfinished pretty printer for feed's plain text representation
author Dirk Olmes <dirk@xanthippe.ping.de>
date Tue, 27 Apr 2010 03:42:08 +0200
parents 215c34f61e95
children fd4c8bfa62d6
files prettyprint.py
diffstat 1 files changed, 50 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/prettyprint.py	Tue Apr 27 03:42:08 2010 +0200
@@ -0,0 +1,50 @@
+
+import sys
+
+newlineAfter = [ '{', '[', ',' ]
+newlineBefore = [ '}', ']' ]
+
+def prettyPrint(file):
+    indent = 0
+    doIndent = False
+    printCommand = None
+    for line in file:
+        for char in line:
+            if char in newlineAfter:
+                if char is not ',':
+                    indent = indent + 1
+                doIndent = True
+                printCommand = p_nl
+            elif char in newlineBefore:
+                indent = indent - 1
+                doIndent = True
+                printCommand = nl_p
+            else:
+                printCommand = p
+                doIndent = False
+
+            printCommand(char)
+            if doIndent:
+                for x in range(indent):                         #@UnusedVariable
+                    sys.stdout.write("    ")
+                    doIndent = False
+
+def p(char):
+    sys.stdout.write(char)
+
+def p_nl(char):
+    sys.stdout.write(char)
+    sys.stdout.write("\n")
+    
+def nl_p(char):
+    sys.stdout.write("\n")
+    sys.stdout.write(char)    
+
+if __name__ == "__main__":
+    if len(sys.argv) < 2:
+        print("usage: %s <file>" % (sys.argv[0]))
+        sys.exit(1)
+    
+    filename = sys.argv[1]
+    with open(filename) as file:
+        prettyPrint(file)
\ No newline at end of file