From 6a6b44f42665bf502a2773617ac94e7b6578b955 Mon Sep 17 00:00:00 2001
From: Bastien Montagne <montagne29@wanadoo.fr>
Date: Thu, 10 Dec 2015 19:31:28 +0100
Subject: [PATCH] blend2json: better global JSON output format.
Less verbose and cleaner imho.
---
utils/blend2json.py | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)
diff --git a/utils/blend2json.py b/utils/blend2json.py
index f1ba0a4..25f81a2 100755
--- a/utils/blend2json.py
+++ b/utils/blend2json.py
@@ -120,14 +120,20 @@ def list_to_json(lst, indent, indent_step, compact_output=False):
##### Main 'struct' writers #####
def bheader_to_json(args, fw, blend, indent, indent_step):
+ fw('%s"%s": [\n' % (indent, "HEADER"))
+ indent = indent + indent_step
+
keyval = (
("magic", json_dumps(blend.header.magic)),
("pointer_size", json_dumps(blend.header.pointer_size)),
("is_little_endian", json_dumps(blend.header.is_little_endian)),
("version", json_dumps(blend.header.version)),
)
- keyval = keyval_to_json(keyval, indent + indent_step, indent_step)
- fw(indent + list_to_json(('"__HEADER__"', keyval), indent, indent_step))
+ keyval = keyval_to_json(keyval, indent, indent_step)
+ fw('%s%s' % (indent, keyval))
+
+ indent = indent[:-len(indent_step)]
+ fw('\n%s]' % indent)
def do_bblock_filter(filters, blend, block, meta_keyval, data_keyval):
@@ -220,13 +226,19 @@ def bblocks_to_json(args, fw, blend, indent, indent_step):
data_keyval = gen_data_keyval(blend, block)
do_bblock_filter(args.block_filters, blend, block, meta_keyval, data_keyval)
+ fw('%s"%s": [\n' % (indent, "DATA"))
+ indent = indent + indent_step
+
is_first = True
for i, block in enumerate(blend.blocks):
if block.user_data is None or block.user_data > 0:
- keyval = keyval_to_json(gen_meta_keyval(blend, block), indent + indent_step, indent_step, args.compact_output)
- fw('%s%s' % ('' if is_first else ',\n', indent) + list_to_json(('"__BLOCK__"', keyval), indent, indent_step, args.compact_output))
+ keyval = keyval_to_json(gen_meta_keyval(blend, block), indent, indent_step, args.compact_output)
+ fw('%s%s%s' % ('' if is_first else ',\n', indent, keyval))
is_first = False
+ indent = indent[:-len(indent_step)]
+ fw('\n%s]' % indent)
+
def bdna_to_json(args, fw, blend, indent, indent_step):
full_dna = args.full_dna and not args.compact_output
@@ -244,6 +256,9 @@ def bdna_to_json(args, fw, blend, indent, indent_step):
lst.append(keyval_to_json(keyval, indent + indent_step, indent_step))
return list_to_json(lst, indent, indent_step)
+ fw('%s"%s": [\n' % (indent, "DNA_STRUCT"))
+ indent = indent + indent_step
+
is_first = True
for dna in blend.structs:
keyval = [
@@ -251,24 +266,27 @@ def bdna_to_json(args, fw, blend, indent, indent_step):
("size", json.dumps(dna.size)),
]
if full_dna:
- keyval += [("fields", bdna_fields_to_json(blend, dna, indent + indent_step * 2, indent_step))]
+ keyval += [("fields", bdna_fields_to_json(blend, dna, indent + indent_step, indent_step))]
else:
keyval += [("nbr_fields", json.dumps(len(dna.fields)))]
- keyval = keyval_to_json(keyval, indent + indent_step, indent_step, args.compact_output)
- fw('%s%s' % ('' if is_first else ',\n', indent) + list_to_json(('"__DNA_STRUCT__"', keyval), indent, indent_step, args.compact_output))
+ keyval = keyval_to_json(keyval, indent, indent_step, args.compact_output)
+ fw('%s%s%s' % ('' if is_first else ',\n', indent, keyval))
is_first = False
+ indent = indent[:-len(indent_step)]
+ fw('\n%s]' % indent)
+
def blend_to_json(args, f, blend):
fw = f.write
- fw('[\n')
+ fw('{\n')
indent = indent_step = " "
bheader_to_json(args, fw, blend, indent, indent_step)
fw(',\n')
bblocks_to_json(args, fw, blend, indent, indent_step)
fw(',\n')
bdna_to_json(args, fw, blend, indent, indent_step)
- fw('\n]\n')
+ fw('\n}\n')
##### Checks #####
--
GitLab