parser-ts
Version:
String parser combinators for TypeScript
61 lines (60 loc) • 1.99 kB
JavaScript
;
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;