rewrite logic as patterns and transforms #42
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes issue #32
The new logic works like this:
pattern.transform
.pattern.transform
finds attributes and alters token stream accordingly.A patterns consist of several tests. Each test must contain either
shift
orposition
. For each token, tests of all patterns are rerun, suchthat you can match which tokens follow each other in the token stream.
Example:
The pattern above will match the token stream if
One may also specify patterns of children:
The children pattern is similar as previous example, but uses
position
here instead of
shift
. This makes it easy to specify last token (position: -1).A transform is usually something like this:
Example:
Note that keys in tests may be:
children
, same as a token test,but will loop childrens of token, note that token should then be of type 'inline'