UNPKG

parser-ts

Version:

String parser combinators for TypeScript

47 lines (46 loc) 1.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.run = void 0; /** * @since 0.6.0 */ var code_frame_1 = require("@babel/code-frame"); var Either_1 = require("fp-ts/lib/Either"); var function_1 = require("fp-ts/lib/function"); var Stream_1 = require("./Stream"); var lineTerminatorRegex = /^\r\n$|^[\n\r]$/; var getLocation = function (source, cursor) { var line = 1; var column = 1; var i = 0; while (i < cursor) { i++; var c = source.charAt(i); if (lineTerminatorRegex.test(c)) { line++; column = 1; } else { column++; } } return { start: { line: line, column: column } }; }; /** * Returns a pretty printed error message using `@babel/code-frame` * * @since 0.6.0 */ var run = function (p, source) { return (0, function_1.pipe)(p((0, Stream_1.stream)(source.split(''))), (0, Either_1.bimap)(function (err) { return (0, code_frame_1.codeFrameColumns)(source, getLocation(source, err.input.cursor), { message: 'Expected: ' + err.expected.join(', ') }); }, function (succ) { return succ.value; })); }; exports.run = run;