UNPKG

parser-ts

Version:

String parser combinators for TypeScript

61 lines (60 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getEq = exports.getAndNext = exports.atEnd = exports.get = exports.stream = void 0; /** * @since 0.6.0 */ var Array_1 = require("fp-ts/lib/Array"); var Eq_1 = require("fp-ts/lib/Eq"); var function_1 = require("fp-ts/lib/function"); var Option_1 = require("fp-ts/lib/Option"); // ------------------------------------------------------------------------------------- // constructors // ------------------------------------------------------------------------------------- /** * @category constructors * @since 0.6.0 */ var stream = function (buffer, cursor) { if (cursor === void 0) { cursor = 0; } return ({ buffer: buffer, cursor: cursor }); }; exports.stream = stream; // ------------------------------------------------------------------------------------- // destructors // ------------------------------------------------------------------------------------- /** * @category destructors * @since 0.6.0 */ var get = function (s) { return (0, Array_1.lookup)(s.cursor, s.buffer); }; exports.get = get; /** * @category destructors * @since 0.6.0 */ var atEnd = function (s) { return s.cursor >= s.buffer.length; }; exports.atEnd = atEnd; /** * @category destructors * @since 0.6.0 */ var getAndNext = function (s) { return (0, function_1.pipe)((0, exports.get)(s), (0, Option_1.map)(function (a) { return ({ value: a, next: { buffer: s.buffer, cursor: s.cursor + 1 } }); })); }; exports.getAndNext = getAndNext; // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- /** * @category instances * @since 0.6.0 */ var getEq = function (E) { var EA = (0, Array_1.getEq)(E); return (0, Eq_1.fromEquals)(function (x, y) { return x.cursor === y.cursor && EA.equals(x.buffer, y.buffer); }); }; exports.getEq = getEq;