fruitsconfits
Version:
FruitsConfits - A well typed and sugared parser combinator framework for TypeScript/JavaScript.
50 lines • 1.54 kB
JavaScript
;
// Copyright (c) 2019 Shellyl_N and Authors
// license: ISC
// https://github.com/shellyln
Object.defineProperty(exports, "__esModule", { value: true });
exports.templateStringsParserInput = exports.parserInput = exports.ParseError = void 0;
class ParseError extends Error {
constructor(result) {
super(result.message);
this.result = result;
}
}
exports.ParseError = ParseError;
function parserInput(src, context) {
return ({
src,
start: 0,
end: src.length,
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
context: context,
templateArgs: [],
templateArgsPos: [],
});
}
exports.parserInput = parserInput;
function templateStringsParserInput(strings, values, context) {
const templateArgsPos = [];
let pos = 0;
if (values.length) {
for (let i = 0; i < strings.length; i++) {
const x = strings[i];
if (i < values.length) {
templateArgsPos.push(pos + x.length);
pos += x.length + 1;
}
}
}
const joined = strings.join('\x00');
return ({
src: joined,
start: 0,
end: joined.length,
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
context: context,
templateArgs: values,
templateArgsPos,
});
}
exports.templateStringsParserInput = templateStringsParserInput;
//# sourceMappingURL=types.js.map