* feat(parser): first iteration of new lexer
* feat(parser): convert token string props to number props
* refactor(parser): optimize char grabber
* refactor(parser): working on new lexer
* refactor(parser): convert token string props to number props
* refactor(parser): rebuild lexer, add tag attrs parsing
* refactor(parser): rework word parsing and tag parsing
* refactor(parser): rework to pass tests
* refactor(parser): rework tag parsing
* refactor(parser): rework escape tags parsing
* refactor(parser): rework tests
* refactor(parser): all test pass
* refactor(parser): make lexer faster by move mode switching in loop
* refactor(parser): remove all state map objects
* refactor(parser): order of parsing states
* refactor(parser): state switching without return
* refactor(parser): rename buffers to chars
* refactor(lexer): reduce function calls
* feat(lexer): add new parser tests and code to pass it
* fix(utils): remove unused variable in char grabber
* feat(lexer): add test for new lexer bug
* chore(*): add lexer and lexer2 to benchmark
* chore(lexer): add some debug info for char grabber
* feat(parser): add new test for single attributes without values
* fix(lexer): paired tags tests
* refactor(lexer): comment breaking changes tests for future releases
* feat(core): improve tests
* refactor(parser): add more tests, reduce char grabber size
* refactor(parser): reduce utils size
* refactor(parser): remove unused code from tag parsing code
* refactor(parser): remove unused code from word to tag transforming code
* chore(benchmark): fix benchmark imports
* feat(parser): write test for only allowed tags parsing
* chore(parser): rename only allowed test
* fix(parser): only allowed tag rendering
* fix(plugin-helper): add new TagNode toString tests
* fix(parser): fix issue with escaping backslashes when enableEscapeTags is set (#20)
there is a bug in the lexer where when enableEscapeTags is set, backslashes
are not always escaped (ie. \\[b] is treated as an escaped tag, rather than a
literal backslash, and then a tag).
* chore: v2.5.1
* feat(parse): allow tags to be escaped with backslash
adds additional option `enableEscapeTags` to `parse` and `createLexer` that
when true will parse openTag and closeTag as WORD (rather than TAG) when
proceeded with backslash
— all operations on nodes moved to `createList` function
- fixed problem with single tags with value only like `[url=value]` fixes#6
- write tests for `Token` class
- moved all node arrays to parse func, now parser supports many instances
- add jsdoc to critical parts of the parser to better understanding how it works