[feaLib.ast] Restore compatibility with 4.9.0

This commit is contained in:
David Corbett 2020-05-15 16:04:27 -04:00
parent 45a8fcefc2
commit 42a17500a3

View File

@ -617,16 +617,24 @@ class ChainContextPosStatement(Statement):
``prefix``, ``glyphs``, and ``suffix`` should be lists of ``prefix``, ``glyphs``, and ``suffix`` should be lists of
`glyph-containing objects`_ . `glyph-containing objects`_ .
``lookups`` should be a list of lists containing :class:`LookupBlock` ``lookups`` should be a list of elements representing what lookups
statements. The length of the outer list should equal to the length of to apply at each glyph position. Each element should be a
``glyphs``; the inner lists can be of variable length. Where there is no :class:`LookupBlock` to apply a single chaining lookup at the given
chaining lookup at the given glyph position, the entry in ``lookups`` position, a list of :class:`LookupBlock`\ s to apply multiple
should be ``None``.""" lookups, or ``None`` to apply no lookup. The length of the outer
list should equal the length of ``glyphs``; the inner lists can be
of variable length."""
def __init__(self, prefix, glyphs, suffix, lookups, location=None): def __init__(self, prefix, glyphs, suffix, lookups, location=None):
Statement.__init__(self, location) Statement.__init__(self, location)
self.prefix, self.glyphs, self.suffix = prefix, glyphs, suffix self.prefix, self.glyphs, self.suffix = prefix, glyphs, suffix
self.lookups = lookups self.lookups = list(lookups)
for i, lookup in enumerate(lookups):
if lookup:
try:
(_ for _ in lookup)
except TypeError:
self.lookups[i] = [lookup]
def build(self, builder): def build(self, builder):
"""Calls the builder's ``add_chain_context_pos`` callback.""" """Calls the builder's ``add_chain_context_pos`` callback."""
@ -662,14 +670,24 @@ class ChainContextSubstStatement(Statement):
``prefix``, ``glyphs``, and ``suffix`` should be lists of ``prefix``, ``glyphs``, and ``suffix`` should be lists of
`glyph-containing objects`_ . `glyph-containing objects`_ .
``lookups`` should be a list of :class:`LookupBlock` statements, with ``lookups`` should be a list of elements representing what lookups
length equal to the length of ``glyphs``. Where there is no chaining to apply at each glyph position. Each element should be a
lookup at the given glyph position, the entry in ``lookups`` should be :class:`LookupBlock` to apply a single chaining lookup at the given
``None``.""" position, a list of :class:`LookupBlock`\ s to apply multiple
lookups, or ``None`` to apply no lookup. The length of the outer
list should equal the length of ``glyphs``; the inner lists can be
of variable length."""
def __init__(self, prefix, glyphs, suffix, lookups, location=None): def __init__(self, prefix, glyphs, suffix, lookups, location=None):
Statement.__init__(self, location) Statement.__init__(self, location)
self.prefix, self.glyphs, self.suffix = prefix, glyphs, suffix self.prefix, self.glyphs, self.suffix = prefix, glyphs, suffix
self.lookups = lookups self.lookups = list(lookups)
for i, lookup in enumerate(lookups):
if lookup:
try:
(_ for _ in lookup)
except TypeError:
self.lookups[i] = [lookup]
def build(self, builder): def build(self, builder):
"""Calls the builder's ``add_chain_context_subst`` callback.""" """Calls the builder's ``add_chain_context_subst`` callback."""