UNPKG

@masala/parser

Version:
99 lines (57 loc) 2.75 kB
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)`