44 lines
1.6 KiB
Plaintext
Executable File
44 lines
1.6 KiB
Plaintext
Executable File
import { __assign } from "tslib";
|
|
import { ErrorKind } from './error';
|
|
import { Parser } from './parser';
|
|
import { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';
|
|
function pruneLocation(els) {
|
|
els.forEach(function (el) {
|
|
delete el.location;
|
|
if (isSelectElement(el) || isPluralElement(el)) {
|
|
for (var k in el.options) {
|
|
delete el.options[k].location;
|
|
pruneLocation(el.options[k].value);
|
|
}
|
|
}
|
|
else if (isNumberElement(el) && isNumberSkeleton(el.style)) {
|
|
delete el.style.location;
|
|
}
|
|
else if ((isDateElement(el) || isTimeElement(el)) &&
|
|
isDateTimeSkeleton(el.style)) {
|
|
delete el.style.location;
|
|
}
|
|
else if (isTagElement(el)) {
|
|
pruneLocation(el.children);
|
|
}
|
|
});
|
|
}
|
|
export function parse(message, opts) {
|
|
if (opts === void 0) { opts = {}; }
|
|
opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);
|
|
var result = new Parser(message, opts).parse();
|
|
if (result.err) {
|
|
var error = SyntaxError(ErrorKind[result.err.kind]);
|
|
// @ts-expect-error Assign to error object
|
|
error.location = result.err.location;
|
|
// @ts-expect-error Assign to error object
|
|
error.originalMessage = result.err.message;
|
|
throw error;
|
|
}
|
|
if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {
|
|
pruneLocation(result.val);
|
|
}
|
|
return result.val;
|
|
}
|
|
export * from './types';
|