[feaLib] Parse feature blocks with useExtension keyword

This commit is contained in:
Sascha Brawer 2015-08-11 15:28:59 +02:00
parent f60d49471d
commit 8b77f68dec
3 changed files with 19 additions and 7 deletions

View File

@ -8,9 +8,9 @@ class FeatureFile(object):
class FeatureBlock(object):
def __init__(self, location, name):
def __init__(self, location, name, use_extension):
self.location = location
self.name = name
self.name, self.use_extension = name, use_extension
self.statements = []

View File

@ -287,7 +287,13 @@ class Parser(object):
location = self.cur_token_location_
tag = self.expect_tag_()
vertical = (tag == "vkrn")
block = ast.FeatureBlock(location, tag)
use_extension = False
if self.next_token_ == "useExtension":
self.expect_keyword_("useExtension")
use_extension = True
block = ast.FeatureBlock(location, tag, use_extension)
self.parse_block_(block, vertical)
return block

View File

@ -36,6 +36,16 @@ class ParserTest(unittest.TestCase):
self.assertEqual(foo.y, 456)
self.assertEqual(foo.contourpoint, 5)
def test_feature_block(self):
[liga] = self.parse("feature liga {} liga;").statements
self.assertEqual(liga.name, "liga")
self.assertFalse(liga.use_extension)
def test_feature_block_useExtension(self):
[liga] = self.parse("feature liga useExtension {} liga;").statements
self.assertEqual(liga.name, "liga")
self.assertTrue(liga.use_extension)
def test_glyphclass(self):
[gc] = self.parse("@dash = [endash emdash figuredash];").statements
self.assertEqual(gc.name, "dash")
@ -366,10 +376,6 @@ class ParserTest(unittest.TestCase):
ParserError, "longer than 4 characters",
self.parse, "languagesystem latn FOOBAR")
def test_feature_block(self):
[liga] = self.parse("feature liga {} liga;").statements
self.assertEqual(liga.name, "liga")
def setUp(self):
self.tempdir = None
self.num_tempfiles = 0