From f582469cb85bab6b368514447957d52b6c394804 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 15 Aug 2022 13:01:46 -0600 Subject: [PATCH] [visitor] Split TTVisitor into its own module --- Lib/fontTools/misc/visitor.py | 21 ++------------------- Lib/fontTools/ttLib/ttVisitor.py | 22 ++++++++++++++++++++++ Snippets/scale-upem.py | 2 +- 3 files changed, 25 insertions(+), 20 deletions(-) create mode 100644 Lib/fontTools/ttLib/ttVisitor.py diff --git a/Lib/fontTools/misc/visitor.py b/Lib/fontTools/misc/visitor.py index 8c82f8ced..40b545339 100644 --- a/Lib/fontTools/misc/visitor.py +++ b/Lib/fontTools/misc/visitor.py @@ -1,4 +1,5 @@ -from fontTools.ttLib import TTFont +"""Generic visitor pattern implementation for Python objects.""" + import enum @@ -94,21 +95,3 @@ class Visitor(object): self.visitObject(obj, *args, **kwargs) elif isinstance(obj, list): self.visitList(obj, *args, **kwargs) - - -class TTVisitor(Visitor): - def visit(self, obj, *args, **kwargs): - if hasattr(obj, "ensureDecompiled"): - obj.ensureDecompiled(recurse=False) - super().visit(obj, *args, **kwargs) - - -@TTVisitor.register(TTFont) -def visit(visitor, font): - if hasattr(visitor, "font"): - return False - visitor.font = font - for tag in font.keys(): - visitor.visit(font[tag]) - del visitor.font - return False diff --git a/Lib/fontTools/ttLib/ttVisitor.py b/Lib/fontTools/ttLib/ttVisitor.py new file mode 100644 index 000000000..d07118579 --- /dev/null +++ b/Lib/fontTools/ttLib/ttVisitor.py @@ -0,0 +1,22 @@ +"""Specialization of fontTools.misc.visitor to work with TTFont.""" + +from fontTools.misc.visitor import Visitor +from fontTools.ttLib import TTFont + + +class TTVisitor(Visitor): + def visit(self, obj, *args, **kwargs): + if hasattr(obj, "ensureDecompiled"): + obj.ensureDecompiled(recurse=False) + super().visit(obj, *args, **kwargs) + + +@TTVisitor.register(TTFont) +def visit(visitor, font): + if hasattr(visitor, "font"): + return False + visitor.font = font + for tag in font.keys(): + visitor.visit(font[tag]) + del visitor.font + return False diff --git a/Snippets/scale-upem.py b/Snippets/scale-upem.py index a6c816326..d10c0f5e4 100644 --- a/Snippets/scale-upem.py +++ b/Snippets/scale-upem.py @@ -1,4 +1,4 @@ -from fontTools.misc.visitor import TTVisitor +from fontTools.ttLib.ttVisitor import TTVisitor import fontTools.ttLib as ttLib import fontTools.ttLib.tables.otBase as otBase import fontTools.ttLib.tables.otTables as otTables