105 Commits

Author SHA1 Message Date
Khaled Hosny
91cb76554d [voltLib] Handle ALL and NONE in PROCESS_MARKS
Both were treated as group names, as NONE was not checked at all and
code for ALL was never reached.
2019-09-25 13:03:52 +02:00
Nikolaus Waxweiler
01328213c7 Remove __future__ imports 2019-08-09 12:20:13 +01:00
Khaled Hosny
e082abf627 [voltLib] Allow passing file-like object to Parser 2019-04-04 18:50:36 +02:00
Khaled Hosny
cedf79b505 [voltLib] Return a tuple from parse_coverage_()
This is a followup to commit 94633e9f46975c356ec3a2d21ed30768c2fa0cd5,
where I mistakenly made it return an Enum but parse_coverage_() it not
used only for ENUMs and in many (most?) places returning an Enum is
wrong as you have a list of separate items that has to rmain separate.
2019-02-02 01:13:14 +02:00
Khaled Hosny
cd553debc3 [voltLib] Accept COMPONENT glyph type 2019-01-24 13:55:53 +02:00
Khaled Hosny
b6ec12bad0 [voltLib] Distinguish different PROCESS_MARKS
PROCESS_MARKS followed by a group name is used for markAttachmentType
lookup flag, while followed by MARK_GLYPH_SET is used for
useMarkFilteringSet. The code parsed both correctly but did not
distinguish between the two in the generated AST as it should since they
compile to different lookup flags.
2019-01-23 10:18:44 +02:00
Khaled Hosny
4236772ec1 [voltLib] glyphSet() should return tuple
We need to maintain the glyph order and keep any duplicates.
2019-01-22 09:42:22 +02:00
Khaled Hosny
94633e9f46 [voltLib] Fix parsing glyph groups
* Fix ast.GroupDefinition.glyphSet() by using ast.GlyphName,
  ast.GroupName and ast.Range in Parser.parse_coverage_(), and making it return
  ast.Enum.

* Add ast.Enum.__len_() to fix the calculation of max_src and max_dest
  in Parser.parse_substitution_(). I’m not sure I understand the logic
  of this many to many check, will double check later.

* Update the test suite to reflect this. Had to add ast.Enum.__eq__() to
  make it less painful, and __hash__() as otherwise ast.Enum wouldn’t be
  used as a key in dicts (not sure this is a goo idea either, will
  double check later).
2019-01-22 09:42:22 +02:00
Khaled Hosny
e529832362 [voltLib] Don’t try to read past END
The parser was still trying to read the next token even when the current
token was END, but I think it should just stop reading here. When
reading from TSIV table there can be null bytes at the end when would
cause an exception in the lexer.
2019-01-16 23:04:14 +02:00
Khaled Hosny
ca716e0925 [voltLib] Fix check for duplicate anchors
When checking for duplicate anchors, the component number should be
taken into account since the same anchors can be used for different
components i.e. over ligatures.
2019-01-16 15:31:05 +02:00
Cosimo Lupo
1fb1529a18
[voltLib.ast] same as feaLib, location=None by default 2018-02-27 19:00:08 +00:00
Cosimo Lupo
78ad48eaf3
Move all *_test.py modules and test data to external Tests/ folder 2017-01-16 09:14:12 +00:00
Cosimo Lupo
49bcbb916b
consistently do sys.exit(unittest.main()) in all test modules
So that when run as scrips they report test failures with exit code

Follow up on b7bb391033ef3255c90134da3d7aef50d2d5326d
2017-01-11 13:05:35 +00:00
moyogo
b97476885b [voltLib] parser: glyphs OrderedSymbolTable is case sensitive 2016-09-15 09:17:11 +01:00
moyogo
fa433c46a2 [voltLib] parser: add test for case sensitive glyph definition 2016-09-15 09:17:11 +01:00
moyogo
fbd90ec94b [voltLib] parser: don’t use feaLib.parse 2016-09-15 07:09:01 +01:00
moyogo
67c08a1f63 [voltLib] ast: don’t use feaLib.ast 2016-09-15 06:58:17 +01:00
moyogo
db3e019ead parser_test: comment out test_def_group_groups_undefined, TODO: reenable it 2016-09-14 17:25:26 +01:00
moyogo
291cdc133f [voltLib] use tuple for coverage and in mapping in tests as well 2016-09-14 17:25:26 +01:00
moyogo
76d8084d77 [voltLib] use OrderedDict for mapping 2016-09-14 17:25:26 +01:00
moyogo
31a1aa8c7a [voltLib] use tuple for coverage and in mapping 2016-09-14 17:25:26 +01:00
moyogo
2f71f7c9ad [voltLib] remove unsused SymbolTable.expand() and remove commented calls 2016-09-14 17:25:26 +01:00
moyogo
7541fc7b1a [voltLib] raise on cyclic groups 2016-09-14 17:25:26 +01:00
moyogo
b758c2b584 [voltLib] reuse GlyphDefinition.glyphs_ if present 2016-09-14 17:25:25 +01:00
moyogo
bc63725beb [voltLib] Add GlyphName, Enum, GroupName, Range to ast. Add resolve_group and glyph_range to Parser 2016-09-14 17:25:25 +01:00
moyogo
f91020c2f4 [voltLib] add OrderedSymbolTable, needed for Parser.glyphs_ and ranges 2016-09-14 17:25:25 +01:00
moyogo
e729fd9b54 [voltLib] parse ReverseChainingSingle substitution 2016-09-14 17:25:25 +01:00
moyogo
e93f7384a5 [voltLib] parse substitution as single, multiple or ligature sub 2016-09-14 17:25:25 +01:00
moyogo
c564b31f47 [voltLib] test for duplicate lang tag 2016-09-14 17:25:25 +01:00
moyogo
da80ce9cd1 [voltLib] test for duplicate script tag 2016-09-14 17:25:25 +01:00
moyogo
23106f71ec [voltLib] lookup name must start with letter 2016-09-14 17:25:25 +01:00
moyogo
1dbb08a296 [voltLib] parse substitution single to multiple and multiple to single, change single to single. 2016-09-14 17:25:24 +01:00
moyogo
7aa42990f0 [voltLib] parser_test.py: add test for locked anchor 2016-09-14 17:25:24 +01:00
moyogo
1b1b52500c [voltLib] handle duplicate or case insensitive duplicate names 2016-09-14 17:25:24 +01:00
moyogo
b026f4d557 [voltLib] format test_anchor_adjust_device 2016-09-14 17:25:24 +01:00
moyogo
80a4cc6d72 [voltLib] change how adjust_single is parsed 2016-09-14 17:25:24 +01:00
moyogo
eb3a2cccd9 [voltLib] parse process_base and process_marks differently for LookupDefinition 2016-09-14 17:25:24 +01:00
moyogo
6caba42cc2 [voltLib] 'adjust_pair' instead of just 'adjust' 2016-09-14 17:25:24 +01:00
moyogo
a4d38b11e1 [voltLib] cyclic groups should be detected later, not in parsing 2016-09-14 17:25:23 +01:00
moyogo
a561fc797b [voltLib] handle empty sub or pos 2016-09-14 17:25:23 +01:00
moyogo
296de366d5 [voltLib] fix parsing device tables, add parse_adjust_by_ 2016-09-14 17:25:23 +01:00
moyogo
8d193ddc53 [voltLib] formatting 2016-09-14 17:25:23 +01:00
moyogo
b70ef7accd [voltLib] parse REVERSAL for reverse chaining context singl substitution 2016-09-14 17:25:23 +01:00
moyogo
319b4cc227 [voltLib] range definition uses TO 2016-09-14 17:25:23 +01:00
moyogo
bf167e6b3b [voltLib] adjust comment 2016-09-14 17:25:23 +01:00
moyogo
7a64ce083b [voltLib] add LookupBlock 2016-09-14 17:25:23 +01:00
moyogo
5d2da8ef45 [voltLib] change error message in test_def_group_groups_cyclic() 2016-09-14 17:25:22 +01:00
moyogo
430b3d21a1 [voltLib] minor formatting 2016-09-14 17:25:22 +01:00
moyogo
08d3460850 [voltLib] Fix test_def_group_groups_cyclic() 2016-09-14 17:25:22 +01:00
moyogo
c3abd1fe3a [voltLib] groups are not expanded in tests 2016-09-14 17:25:22 +01:00