[feaLib] Simplify how ClassDef tables are built

In f0eb7e98ca0642f17ac82433db8c957fffd6a9d3, the various subclasses
of otTables.ClassDef were merged into one single class. Therefore,
we can now always instantiate otTables.ClassDef() which is simpler.
This commit is contained in:
Sascha Brawer 2016-01-14 11:56:57 +01:00
parent bf29ec9555
commit d2f9fa8a39
2 changed files with 11 additions and 12 deletions

View File

@ -1248,8 +1248,8 @@ class ClassPairPosSubtableBuilder(object):
self.classDef2_.canAdd(gc2))
if not mergeable:
self.flush_()
self.classDef1_ = ClassDefBuilder(otTables.ClassDef1, useClass0=True)
self.classDef2_ = ClassDefBuilder(otTables.ClassDef2)
self.classDef1_ = ClassDefBuilder(useClass0=True)
self.classDef2_ = ClassDefBuilder(useClass0=False)
self.coverage_ = set()
self.values_ = {}
self.classDef1_.add(gc1)
@ -1410,10 +1410,9 @@ class SinglePosBuilder(LookupBuilder):
class ClassDefBuilder(object):
"""Helper for building ClassDef tables."""
def __init__(self, otClass, useClass0=False):
def __init__(self, useClass0):
self.classes_ = set()
self.glyphs_ = {}
self.otClass_ = otClass
self.useClass0_ = useClass0
def canAdd(self, glyphs):
@ -1459,6 +1458,6 @@ class ClassDefBuilder(object):
continue
for glyph in glyphs:
glyphClasses[glyph] = classID
classDef = self.otClass_()
classDef = otTables.ClassDef()
classDef.classDefs = glyphClasses
return classDef

View File

@ -332,26 +332,26 @@ for name in BuilderTest.TEST_FEATURE_FILES:
class ClassDefBuilderTest(unittest.TestCase):
def test_build_ClassDef1(self):
builder = ClassDefBuilder(otTables.ClassDef1, useClass0=True)
def test_build_usingClass0(self):
builder = ClassDefBuilder(useClass0=True)
builder.add({"a", "b"})
builder.add({"c"})
builder.add({"e", "f", "g", "h"})
cdef = builder.build()
self.assertIsInstance(cdef, otTables.ClassDef1)
self.assertIsInstance(cdef, otTables.ClassDef)
self.assertEqual(cdef.classDefs, {
"a": 1,
"b": 1,
"c": 2
})
def test_build_ClassDef2(self):
builder = ClassDefBuilder(otTables.ClassDef2)
def test_build_notUsingClass0(self):
builder = ClassDefBuilder(useClass0=False)
builder.add({"a", "b"})
builder.add({"c"})
builder.add({"e", "f", "g", "h"})
cdef = builder.build()
self.assertIsInstance(cdef, otTables.ClassDef2)
self.assertIsInstance(cdef, otTables.ClassDef)
self.assertEqual(cdef.classDefs, {
"a": 2,
"b": 2,
@ -363,7 +363,7 @@ class ClassDefBuilderTest(unittest.TestCase):
})
def test_canAdd(self):
b = ClassDefBuilder(otTables.ClassDef1, useClass0=True)
b = ClassDefBuilder(useClass0=True)
b.add({"a", "b", "c", "d"})
b.add({"e", "f"})
self.assertTrue(b.canAdd({"a", "b", "c", "d"}))