summaryrefslogtreecommitdiff
path: root/src/py/examples/simple-cam.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/py/examples/simple-cam.py')
0 files changed, 0 insertions, 0 deletions
' href='#n71'>71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (C) 2019, Raspberry Pi (Trading) Limited
#
# ctt_pretty_print_json.py - camera tuning tool JSON formatter

import sys


class JSONPrettyPrinter(object):
    """
    Take a collapsed JSON file and make it more readable
    """
    def __init__(self, fout):
        self.state = {
            "indent": 0,
            "inarray": [False],
            "arraycount": [],
            "skipnewline": True,
            "need_indent": False,
            "need_space": False,
        }

        self.fout = fout

    def newline(self):
        if not self.state["skipnewline"]:
            self.fout.write('\n')
            self.state["need_indent"] = True
            self.state["need_space"] = False
        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
        if self.state["need_space"]:
            self.fout.write(' ')
            self.state["need_space"] = False
        self.fout.write(c)
        self.state["skipnewline"] = False

    def process_char(self, c):
        if c == '{':
            self.newline()
            self.write(c)
            self.state["indent"] += 1
            self.newline()
        elif c == '}':
            self.state["indent"] -= 1
            self.newline()
            self.write(c)
        elif c == '[':
            self.newline()