From 3b96f5fca6a18a41ff7b80b0a5667d0ba4182cd0 Mon Sep 17 00:00:00 2001 From: alexion Date: Mon, 7 Sep 2026 19:47:22 -0400 Subject: [PATCH] refactor(clew): compact Ren'Py AST JSON --- src/clew/extract_renpy_ast.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/clew/extract_renpy_ast.py b/src/clew/extract_renpy_ast.py index 537206c..35ac9a5 100644 --- a/src/clew/extract_renpy_ast.py +++ b/src/clew/extract_renpy_ast.py @@ -110,14 +110,14 @@ def is_primitive(value): return value is None or isinstance(value, (bool, int, long, float, basestring)) -class Dumper(object): +class Serializer(object): def __init__(self, max_depth): self.max_depth = max_depth self.next_id = 1 self.seen = {} self.active_containers = set() - def dump(self, value, depth=0): + def serialize(self, value, depth=0): if is_primitive(value): return safe_text(value) @@ -133,7 +133,7 @@ class Dumper(object): if object_id in self.active_containers: return {"type": "recursion", "class": class_name(value)} self.active_containers.add(object_id) - items = [self.dump(item, depth + 1) for item in value] + items = [self.serialize(item, depth + 1) for item in value] self.active_containers.remove(object_id) return {"type": "tuple" if isinstance(value, tuple) else "list", "items": items} @@ -144,7 +144,7 @@ class Dumper(object): self.active_containers.add(object_id) items = [] for key, item in sorted(value.items(), key=lambda pair: repr(pair[0])): - items.append({"key": self.dump(key, depth + 1), "value": self.dump(item, depth + 1)}) + items.append({"key": self.serialize(key, depth + 1), "value": self.serialize(item, depth + 1)}) self.active_containers.remove(object_id) return {"type": "dict", "items": items} @@ -159,9 +159,9 @@ class Dumper(object): if identity in self.seen: return {"type": "ref", "id": self.seen[identity]} - dump_id = self.next_id + value_id = self.next_id self.next_id += 1 - self.seen[identity] = dump_id + self.seen[identity] = value_id attributes = {} for slot in collect_slots(value): @@ -178,7 +178,7 @@ class Dumper(object): "repr": repr(error), } continue - attributes[slot] = self.dump(slot_value, depth + 1) + attributes[slot] = self.serialize(slot_value, depth + 1) value_dict = getattr(value, "__dict__", None) if value_dict: @@ -187,7 +187,7 @@ class Dumper(object): key_text = safe_text(key) else: key_text = repr(key) - attributes[key_text] = self.dump(item, depth + 1) + attributes[key_text] = self.serialize(item, depth + 1) if not attributes: del self.seen[identity] @@ -199,7 +199,7 @@ class Dumper(object): return { "type": "object", - "id": dump_id, + "id": value_id, "class": class_name(value), "attributes": attributes, } @@ -210,7 +210,7 @@ def write_json(path, document): if parent and not os.path.isdir(parent): os.makedirs(parent) - data = json.dumps(document, indent=2, sort_keys=True) + data = json.dumps(document, separators=(",", ":"), sort_keys=True) if not isinstance(data, bytes): data = data.encode("utf-8") @@ -242,7 +242,7 @@ def main(argv): renpy = import_renpy(args.game_root) slot, metadata, roots = load_compiled_script(args.input) - dumper = Dumper(args.max_depth) + serializer = Serializer(args.max_depth) document = { "schema": SCHEMA, "source": os.path.abspath(args.input), @@ -250,8 +250,8 @@ def main(argv): "slot": slot, "python_version": sys.version, "renpy_version": getattr(renpy, "version", None), - "metadata": dumper.dump(metadata), - "roots": dumper.dump(roots), + "metadata": serializer.serialize(metadata), + "roots": serializer.serialize(roots), } write_json(args.output, document)