parjs
Version:
Library for building parsers using combinators.
36 lines • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pipe = exports.composeCombinator = exports.defineCombinator = void 0;
const wrap_implicit_1 = require("../wrap-implicit");
/**
* Represents the given function as a Parjs combinator.
*
* @param f The combinator function.
*/
function defineCombinator(f) {
return (x) => {
const resolved = (0, wrap_implicit_1.wrapImplicit)(x);
return f(resolved);
};
}
exports.defineCombinator = defineCombinator;
function composeCombinator(...fs) {
return (x) => {
let last = x;
for (const f of fs) {
last = f(last);
}
return last;
};
}
exports.composeCombinator = composeCombinator;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function pipe(source, ...funcs) {
let last = (0, wrap_implicit_1.wrapImplicit)(source);
for (const func of funcs) {
last = func(last);
}
return last;
}
exports.pipe = pipe;
//# sourceMappingURL=combinator.js.map