Changeset 177
- Timestamp:
- 04/11/08 19:38:03 (9 months ago)
- Files:
-
- packages/feaTools/trunk/Lib/feaTools/parser.py (modified) (2 diffs)
- packages/feaTools/trunk/Lib/feaTools/test.py (modified) (2 diffs)
- packages/feaTools/trunk/Lib/feaTools/writers/baseWriter.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
packages/feaTools/trunk/Lib/feaTools/parser.py
r172 r177 192 192 "\s*;" # ; 193 193 ) 194 195 # used for finding feature references 196 featureReferenceRE = re.compile( 197 "([\s;\{\}]|^)" # whitepace, ; {, } or start of line 198 "feature\s+" # feature 199 "([\w\d]{4})" # name 200 "\s*;" # { 201 ) 202 203 # used for finding lookup references 204 lookupReferenceRE = re.compile( 205 "([\s;\{\}]|^)" # whitepace, ; {, } or start of line 206 "lookup\s+" # lookup 207 "([\w\d]+)" # name 208 "\s*;" # { 209 ) 210 211 194 212 195 213 def _parseUnknown(writer, text): … … 290 308 text = _executeSimpleSlice(precedingMark, text, includeRE, writer) 291 309 writer.include(path) 310 # feature reference 311 featureReferences = featureReferenceRE.findall(text) 312 for precedingMark, featureName in featureReferences: 313 text = _executeSimpleSlice(precedingMark, text, featureReferenceRE, writer) 314 writer.featureReference(featureName) 315 # lookup reference 316 lookupReferences = lookupReferenceRE.findall(text) 317 for precedingMark, lookupName in lookupReferences: 318 text = _executeSimpleSlice(precedingMark, text, lookupReferenceRE, writer) 319 writer.lookupReference(lookupName) 292 320 # subtable 293 321 subtables = subtableRE.findall(text) packages/feaTools/trunk/Lib/feaTools/test.py
r112 r177 60 60 def include(self, path): 61 61 self._instructions.append(("include", (path))) 62 63 def subtableBreak(self): 64 self._instructions.append(("subtableBreak", None)) 65 66 def lookupReference(self, name): 67 self._instructions.append(("lookupReference", name)) 68 69 def featureReference(self, name): 70 self._instructions.append(("featureReference", name)) 62 71 63 72 … … 578 587 self.assertEqual(result, expected) 579 588 589 def testSubtableBreak(self): 590 test = """subtable;""" 591 writer = TestFeatureWriter() 592 parseFeatures(writer, test) 593 result = writer.getData() 594 expected = [ 595 ("subtableBreak", None) 596 ] 597 self.assertEqual(result, expected) 598 # 599 test = """subtable;subtable;""" 600 writer = TestFeatureWriter() 601 parseFeatures(writer, test) 602 result = writer.getData() 603 expected = [ 604 ("subtableBreak", None), 605 ("subtableBreak", None) 606 ] 607 self.assertEqual(result, expected) 608 609 def testFeatureReference(self): 610 test = """feature fooo;""" 611 writer = TestFeatureWriter() 612 parseFeatures(writer, test) 613 result = writer.getData() 614 expected = [ 615 ("featureReference", "fooo") 616 ] 617 self.assertEqual(result, expected) 618 # 619 test = """feature barr {feature fooo;} barr;""" 620 writer = TestFeatureWriter() 621 parseFeatures(writer, test) 622 result = writer.getData() 623 expected = [("feature", ("barr", [("featureReference", "fooo")]))] 624 self.assertEqual(result, expected) 625 626 def testLookupReference(self): 627 test = """lookup foo;""" 628 writer = TestFeatureWriter() 629 parseFeatures(writer, test) 630 result = writer.getData() 631 expected = [ 632 ("lookupReference", "foo") 633 ] 634 self.assertEqual(result, expected) 635 # 636 test = """lookup bar {lookup foo;} bar;""" 637 writer = TestFeatureWriter() 638 parseFeatures(writer, test) 639 result = writer.getData() 640 expected = [("lookup", ("bar", [("lookupReference", "foo")]))] 641 self.assertEqual(result, expected) 642 580 643 581 644 if __name__ == "__main__": packages/feaTools/trunk/Lib/feaTools/writers/baseWriter.py
r172 r177 5 5 6 6 def lookup(self, name): 7 raise NotImplementedError 8 9 def featureReference(self, name): 10 raise NotImplementedError 11 12 def lookupReference(self, name): 7 13 raise NotImplementedError 8 14
