[libcamera-devel,08/10] utils: raspberrypi: ctt: json_pretty_print: Collapse newlines

Message ID 20200703001422.24324-9-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • utils: raspberrypi: ctt: Improve JSON pretty printer
Related show

Commit Message

Laurent Pinchart July 3, 2020, 12:14 a.m. UTC
Simplify the newline skipping logic by simply collapsing newlines. If a
newline has been output, all subsequent newlines will be skipped until
the next non-newline character is output.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 utils/raspberrypi/ctt/ctt_pretty_print_json.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

Patch

diff --git a/utils/raspberrypi/ctt/ctt_pretty_print_json.py b/utils/raspberrypi/ctt/ctt_pretty_print_json.py
index f1c61347d8fc..f7fdb65116bc 100644
--- a/utils/raspberrypi/ctt/ctt_pretty_print_json.py
+++ b/utils/raspberrypi/ctt/ctt_pretty_print_json.py
@@ -23,19 +23,21 @@  class JSONPrettyPrinter(object):
         self.fout = fout
 
     def newline(self):
-        self.fout.write('\n')
-        self.state["need_indent"] = True
+        if not self.state["skipnewline"]:
+            self.fout.write('\n')
+            self.state["need_indent"] = True
+        self.state["skipnewline"] = True
 
     def write(self, c):
         if self.state["need_indent"]:
             self.fout.write(' ' * self.state["indent"] * 4)
             self.state["need_indent"] = False
         self.fout.write(c)
+        self.state["skipnewline"] = False
 
     def process_char(self, c):
         if c == '{':
-            if not self.state["skipnewline"]:
-                self.newline()
+            self.newline()
             self.write(c)
             self.state["indent"] += 1
             self.newline()
@@ -76,7 +78,6 @@  class JSONPrettyPrinter(object):
             pass
         else:
             self.write(c)
-        self.state["skipnewline"] = (c == '[')
 
     def print(self, string):
         for c in string: