@anchan828/json-ast
Version:
JSON parser AST utilities
19 lines (18 loc) • 688 B
JavaScript
function showCodeFragment(source, linePosition, columnPosition) {
const lines = source.split(/\n|\r\n?|\f/);
const line = lines[linePosition - 1];
const marker = new Array(columnPosition).join(" ") + "^";
return `${line}\n${marker}`;
}
class ParseError extends SyntaxError {
constructor(message, source, linePosition, columnPosition) {
const fullMessage = linePosition
? message + "\n" + showCodeFragment(source, linePosition, columnPosition)
: message;
super(fullMessage);
this.message = message;
}
}
export function error(message, source, line, column) {
throw new ParseError(message, source, line, column);
}