[print-json] Actually valid json now!

This commit is contained in:
Behdad Esfahbod 2022-08-15 21:40:05 -06:00
parent f8e5ea4f95
commit 82b894c497

View File

@ -1,6 +1,7 @@
import fontTools.ttLib as ttLib import fontTools.ttLib as ttLib
from fontTools.ttLib.ttVisitor import TTVisitor from fontTools.ttLib.ttVisitor import TTVisitor
from fontTools.misc.textTools import Tag from fontTools.misc.textTools import Tag
from array import array
class JsonVisitor(TTVisitor): class JsonVisitor(TTVisitor):
@ -65,16 +66,15 @@ class JsonVisitor(TTVisitor):
def visitLeaf(self, obj): def visitLeaf(self, obj):
if isinstance(obj, tuple): if isinstance(obj, tuple):
obj = list(obj) obj = list(obj)
elif isinstance(obj, bytes):
obj = list(obj)
if obj is None: if obj is None:
s = "null" s = "null"
elif obj == True: elif obj is True:
s = "true" s = "true"
elif obj == False: elif obj is False:
s = "false" s = "false"
elif isinstance(obj, bytes):
s = repr(obj)
s = s[1:]
else: else:
s = repr(obj) s = repr(obj)
@ -119,6 +119,16 @@ def visit(self, obj):
print('"%s"' % str(obj), end="", file=self.file) print('"%s"' % str(obj), end="", file=self.file)
return False return False
@JsonVisitor.register(array)
def visit(self, obj):
self.visitList(obj)
return False
@JsonVisitor.register(bytearray)
def visit(self, obj):
self.visitList(obj)
return False
if __name__ == "__main__": if __name__ == "__main__":