UNPKG

parjs

Version:

Library for building parsers using combinators.

68 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResultKind = exports.isParjsResult = exports.isParjsFailure = exports.isParjsSuccess = exports.ParjsFailure = exports.ParjsSuccess = void 0; const errors_1 = require("../errors"); const trace_visualizer_1 = require("./trace-visualizer"); /** Indicates a success reply and contains the value and other information. */ class ParjsSuccess { constructor(value) { this.value = value; /** The kind of the result: OK, Soft, Hard, Fatal. */ this.kind = exports.ResultKind.Ok; } toString() { return `Success: ${this.value}`; } /** Whether this result is an OK. */ get isOk() { return true; } } exports.ParjsSuccess = ParjsSuccess; /** A failure result from a Parjs parser. */ class ParjsFailure { constructor(trace) { this.trace = trace; } get value() { throw new errors_1.ParjsParsingFailure(this); } get kind() { return this.trace.kind; } get reason() { return this.trace.reason; } toString() { return (0, trace_visualizer_1.visualizeTrace)(this.trace); } /** Whether this result is an OK. */ get isOk() { return false; } } exports.ParjsFailure = ParjsFailure; function isParjsSuccess(x) { return x instanceof ParjsSuccess; } exports.isParjsSuccess = isParjsSuccess; function isParjsFailure(x) { return x instanceof ParjsFailure; } exports.isParjsFailure = isParjsFailure; function isParjsResult(x) { return x instanceof ParjsSuccess || x instanceof ParjsFailure; } exports.isParjsResult = isParjsResult; /** Namespace that contains the different reply kinds/error levels. */ exports.ResultKind = { /** An OK reply. */ Ok: "OK", /** A soft failure reply. */ SoftFail: "Soft", /** A hard failure reply. */ HardFail: "Hard", /** A fatal failure reply. */ FatalFail: "Fatal" }; //# sourceMappingURL=result.js.map