UNPKG

parjs

Version:

Library for building parsers using combinators.

34 lines 1.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.must = void 0; const combinated_1 = require("../combinated"); const wrap_implicit_1 = require("../wrap-implicit"); class Must extends combinated_1.Combinated { constructor(source, _predicate) { super(source); this._predicate = _predicate; this.type = "must"; this.expecting = `internal parser ${this.source.type} yielding a result satisfying condition`; } _apply(ps) { this.source.apply(ps); if (!ps.isOk) { return; } const result = this._predicate(ps.value, ps.userState); if (result === true) return; ps.kind = result.kind || "Soft"; ps.reason = result.reason || "failed to fulfill a predicate"; } } /** * Applies the source parser and makes sure its result fulfills `predicate`. * * @param predicate The condition to check for. */ function must(predicate) { return source => new Must((0, wrap_implicit_1.wrapImplicit)(source), predicate); } exports.must = must; //# sourceMappingURL=must.js.map