UNPKG

@anchan828/json-ast

Version:
19 lines (18 loc) 688 B
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); }