Source code for reconfigure.parsers.jsonparser

from reconfigure.nodes import *
from reconfigure.parsers import BaseParser
import json


[docs]class JsonParser (BaseParser): """ A parser for JSON files (using ``json`` module) """
[docs] def parse(self, content): node = RootNode() self.load_node_rec(node, json.loads(content)) return node
[docs] def load_node_rec(self, node, json): for k in sorted(json.keys()): v = json[k] if isinstance(v, dict): child = Node(k) node.children.append(child) self.load_node_rec(child, v) else: node.children.append(PropertyNode(k, v))
[docs] def stringify(self, tree): return json.dumps(self.save_node_rec(tree), indent=4)
[docs] def save_node_rec(self, node): r = {} for child in node.children: if isinstance(child, PropertyNode): r[child.name] = child.value else: r[child.name] = self.save_node_rec(child) return r