@masala/parser
Version:
99 lines (57 loc) • 2.75 kB
Markdown
Changelog
====
0.8.1: better ts support
---
Minor change on ts and bug fix
0.7 ->0.8: Using Tuples with then
---
* Any then() and thenXYZ() function call will return a `Tuple` . This tuple has `single()` and `array()` methods to get value.
`Parser.drop()`, `F.nop()` methods will produce a *Neutral element* for that Tuple : it will be ignored.
* Therefore `thenReturns()` is renamed `returns()`.
* `rep()` and `optrep()` will also produce a Tuple
- combination of `rep()` and `then()` will produce one unique Tuple
- you can *break apart* this tuple using `Parser.array()` at any point if needed
* `GenLex` has been totally refactored and simplified for high level parsers on tokens.
* Typescript interface is operational and `masala-parser.d.ts` documentation will generate Masala Parser reference.
* `N.digit()` and `N.digits()` return a number, not a string
* Markdown bundled is removed from the lib, and put as example in typescript integration
Less important :
* `F.layer()` along with `Parser.and()` produces an array of results when all parsers are satisfied.
- it makes backtracking like `F.try()` with `Parser.or()`
- warning: it's still experimental for side cases
* Bug correction on offset for high level parsers.
- Random Access in `ParserStream` will result in unpredicted value. Don't do it.
* `response.isConsumed()` is replaced by `response.isEos()`
0.6 -> 0.7: Typescript support
----
This release has been focused on typescript support.
## Export
* Export is a bit better handled; no more doublon
* Exporting `Parser` instead of `parser`
* `ExtractorBundle` and `TokenBundle` are pruned (#96)
# Functions
Every parser in CharBundle, FlowBundle and NumberBundle need to be called as a function
//Previously
const p = C.letter.then(N.integer).then(F.eos);
// Now:
const p = C.letter().then(N.integer()).then(F.eos());
It's less funky, but it avoids construction of Parsers at import statement, before writing the first line code.
### FlowBundle
* `F.startWith(value)`: Creates a Parser with a defined value
* `F.sequence()` is pruned
### Typescript and @types
Automated types are enabled with a partial declaration file. Basically, all functions of Parser, CharBundle,
NumberBundle and FlowBundle are supported, but Genlex is not yet. 0.8 release will be focused on Genlex.
0.5 -> 0.6
----
## Response
* Added `response.isCompleted()`
## Parser
* `flatmap()` renamed to `flatMap()`
## Flow Bundle
* `F.lazy(parser, params, self )` accepts a third `this` parameter
* `F.sequence()` is deprecated
Added to the FlowBundle
* `F.startsWith(value)`
* `F.moveUntil(string|stopParser)`
* `F.dropTo(string|stopParser)`