putout
Version:
the pluggable code transformer
45 lines (35 loc) • 808 B
JavaScript
;
const parser = require('error-stack-parser');
module.exports.parseError = (e, {debug}) => {
const {line, column} = e.loc || (debug ? getPosition(e) : {
line: 1,
column: 1,
});
const rule = e.rule ? `${e.rule} (parser)` : 'parser';
const message = cutBrackets(e.message);
return [{
rule,
message,
position: {
line,
column,
},
}];
};
function cutBrackets(a) {
const index = a.lastIndexOf('(');
if (!~index)
return a;
return a.slice(0, index);
}
function getPosition(e) {
const [stack] = parser.parse(e);
const {
lineNumber,
columnNumber,
} = stack;
return {
line: lineNumber,
column: columnNumber,
};
}