Some more refactoring
diff --git a/pyotlss.py b/pyotlss.py
index 6be65c8..f3ce0f4 100755
--- a/pyotlss.py
+++ b/pyotlss.py
@@ -283,17 +283,24 @@
@add_method(fontTools.ttLib.tables.otTables.ContextSubst, fontTools.ttLib.tables.otTables.ChainContextSubst,
fontTools.ttLib.tables.otTables.ContextPos, fontTools.ttLib.tables.otTables.ChainContextPos)
def __classify_context (self):
- if self.__class__.__name__.startswith ('Chain'):
- SubRule = 'ChainSubRule'
- SubRuleSet = 'ChainSubRuleSet'
- else:
- SubRule = 'SubRule'
- SubRuleSet = 'SubRuleSet'
- if self.__class__.__name__.endswith ('Subst'):
- LookupRecord = 'SubstLookupRecord'
- else:
- LookupRecord = 'PosLookupRecord'
- return (SubRule, SubRuleSet, LookupRecord)
+ class ContextContext:
+ def __init__ (self, lookup):
+ if lookup.__class__.__name__.startswith ('Chain'):
+ self.SubRule = 'ChainSubRule'
+ self.SubRuleCount = 'ChainSubRuleCount'
+ self.SubRuleSetCount = 'ChainSubRuleSetCount'
+ else:
+ self.SubRule = 'SubRule'
+ self.SubRuleCount = 'SubRuleCount'
+ self.SubRuleSet = 'SubRuleSet'
+ self.SubRuleSetCount = 'SubRuleSetCount'
+ if lookup.__class__.__name__.endswith ('Subst'):
+ self.LookupRecord = 'SubstLookupRecord'
+ else:
+ self.LookupRecord = 'PosLookupRecord'
+ if not hasattr (self.__class__, "__ContextContext"):
+ self.__class__.__ContextContext = ContextContext (self)
+ return self.__class__.__ContextContext
@add_method(fontTools.ttLib.tables.otTables.ContextSubst)
def closure_glyphs (self, glyphs, table):
@@ -373,19 +380,21 @@
@add_method(fontTools.ttLib.tables.otTables.ContextSubst, fontTools.ttLib.tables.otTables.ChainContextSubst,
fontTools.ttLib.tables.otTables.ContextPos, fontTools.ttLib.tables.otTables.ChainContextPos)
def subset_lookups (self, lookup_indices):
- SubRule, SubRuleSet, LookupRecord = self.__classify_context ()
+ c = self.__classify_context ()
if self.Format == 1:
- for rs in getattr (self, SubRuleSet):
- for r in getattr (rs, SubRule):
- setattr (r, LookupRecord, [ll for ll in getattr (r, LookupRecord) if ll.LookupListIndex in lookup_indices])
- for ll in getattr (r, LookupRecord):
+ for rs in getattr (self, c.SubRuleSet):
+ for r in getattr (rs, c.SubRule):
+ setattr (r, c.LookupRecord, [ll for ll in getattr (r, c.LookupRecord) \
+ if ll.LookupListIndex in lookup_indices])
+ for ll in getattr (r, c.LookupRecord):
ll.LookupListIndex = lookup_indices.index (ll.LookupListIndex)
elif self.Format == 2:
assert 0 # XXX
elif self.Format == 3:
- setattr (self, LookupRecord, [ll for ll in getattr (self, LookupRecord) if ll.LookupListIndex in lookup_indices])
- for ll in getattr (self, LookupRecord):
+ setattr (self, c.LookupRecord, [ll for ll in getattr (self, c.LookupRecord) \
+ if ll.LookupListIndex in lookup_indices])
+ for ll in getattr (self, c.LookupRecord):
ll.LookupListIndex = lookup_indices.index (ll.LookupListIndex)
else:
assert 0, "unknown format: %s" % self.Format
@@ -393,14 +402,18 @@
@add_method(fontTools.ttLib.tables.otTables.ContextSubst, fontTools.ttLib.tables.otTables.ChainContextSubst,
fontTools.ttLib.tables.otTables.ContextPos, fontTools.ttLib.tables.otTables.ChainContextPos)
def collect_lookups (self):
- SubRule, SubRuleSet, LookupRecord = self.__classify_context ()
+ c = self.__classify_context ()
if self.Format == 1:
- return [ll.LookupListIndex for rs in getattr (self, SubRuleSet) for r in getattr (rs, SubRule) for ll in getattr (r, LookupRecord)]
+ return [ll.LookupListIndex \
+ for rs in getattr (self, c.SubRuleSet) \
+ for r in getattr (rs, c.SubRule) \
+ for ll in getattr (r, c.LookupRecord)]
elif self.Format == 2:
assert 0 # XXX
elif self.Format == 3:
- return [ll.LookupListIndex for ll in getattr (self, LookupRecord)]
+ return [ll.LookupListIndex \
+ for ll in getattr (self, c.LookupRecord)]
else:
assert 0, "unknown format: %s" % self.Format