Files
beall-11ty/node_modules/@rgrove/parse-xml/dist/lib/XmlError.js

52 lines
1.6 KiB
JavaScript
Raw Normal View History

2026-03-31 16:38:22 -07:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.XmlError = void 0;
/**
* An error that occurred while parsing XML.
*/
class XmlError extends Error {
constructor(message, charIndex, xml) {
let column = 1;
let excerpt = '';
let line = 1;
// Find the line and column where the error occurred.
for (let i = 0; i < charIndex; ++i) {
let char = xml[i];
if (char === '\n') {
column = 1;
excerpt = '';
line += 1;
}
else {
column += 1;
excerpt += char;
}
}
let eol = xml.indexOf('\n', charIndex);
excerpt += eol === -1
? xml.slice(charIndex)
: xml.slice(charIndex, eol);
let excerptStart = 0;
// Keep the excerpt below 50 chars, but always keep the error position in
// view.
if (excerpt.length > 50) {
if (column < 40) {
excerpt = excerpt.slice(0, 50);
}
else {
excerptStart = column - 20;
excerpt = excerpt.slice(excerptStart, column + 30);
}
}
super(`${message} (line ${line}, column ${column})\n`
+ ` ${excerpt}\n`
+ ' '.repeat(column - excerptStart + 1) + '^\n');
this.column = column;
this.excerpt = excerpt;
this.line = line;
this.name = 'XmlError';
this.pos = charIndex;
}
}
exports.XmlError = XmlError;
//# sourceMappingURL=XmlError.js.map