0 indent means don't bother with newlines either
Matt S Trout [Sun, 17 Jun 2012 23:28:46 +0000 (00:28 +0100)]
tcvJSON.tcl

index 7b6d382..f0e781a 100755 (executable)
@@ -191,6 +191,7 @@ proc tcvJSON::unparse {thing args} {
     set type [lindex $thing 0]
     set indent 2
     set indentIncr 2
+    set nl "\n"
 
     if {[llength $args] > 0} {
         set indent [lindex $args 0]
@@ -199,21 +200,22 @@ proc tcvJSON::unparse {thing args} {
         } else {
           set indentIncr $indent
         }
+        if {$indent == 0} { set nl "" }
     }
 
     switch -- $type {
         {list} {
-            append output "\[\n[string repeat " " $indent]"
+            append output "\[$nl[string repeat " " $indent]"
             set tmp {}
             foreach element [lrange $thing 1 end] {
                 lappend tmp [unparse $element [expr {$indent + $indentIncr}] $indentIncr]
             }
-            append output [join $tmp ",\n[string repeat " " $indent]"]
-            append output "\n[string repeat " " [expr {$indent - $indentIncr}]]\]"
+            append output [join $tmp ",$nl[string repeat " " $indent]"]
+            append output "$nl[string repeat " " [expr {$indent - $indentIncr}]]\]"
         }
 
         {obj} {
-            append output "\{\n[string repeat " " $indent]"
+            append output "\{$nl[string repeat " " $indent]"
             set tmp {}
             for {set i 1} {$i < [llength $thing]} {incr i} {
                 set key [lindex $thing $i]
@@ -221,7 +223,7 @@ proc tcvJSON::unparse {thing args} {
                 lappend tmp "\"$key\": [unparse $value [expr {$indent + $indentIncr}] $indentIncr]"
             }
             append output [join $tmp ",\n[string repeat " " $indent]"]
-            append output "\n[string repeat " " [expr {$indent - $indentIncr}]]\}"
+            append output "$nl[string repeat " " [expr {$indent - $indentIncr}]]\}"
         }
 
         {str} {