@argdown/node
Version:
Async Argdown application for node.js
41 lines • 2.04 kB
JavaScript
import { TokenNames, ArgdownPluginError } from "@argdown/core";
export class LogParserErrorsPlugin {
constructor() {
this.name = "LogParserErrorsPlugin";
this.run = (request, response, logger) => {
if (response.parserErrors && response.parserErrors.length > 0) {
process.exitCode = 1;
if (request.logParserErrors) {
const inputFile = request.inputPath;
const nrOfErrors = response.parserErrors.length;
if (inputFile) {
logger.log("error", `\u001b[31m\u001b[1mArgdown syntax errors in ${inputFile}: ${nrOfErrors}\u001b[0m\n`);
}
else {
logger.log("error", `\u001b[31m\u001b[1mArgdown syntax errors in input: ${nrOfErrors}\u001b[0m\n`);
}
for (let error of response.parserErrors) {
const message = error.message;
var startLine, startColumn;
if (error.token &&
error.token.tokenType &&
error.token.tokenType.name === TokenNames.EOF) {
if (error.previousToken) {
startLine = error.previousToken.startLine;
startColumn = error.previousToken.startColumn;
}
}
else {
startLine = error.token.startLine;
startColumn = error.token.startColumn;
}
logger.log("error", `\u001b[31mAt ${startLine}:${startColumn}\u001b[0m\n${message}\n`);
}
}
throw new ArgdownPluginError(this.name, "parser-errors", "Invalid Argdown syntax detected.");
}
return response;
};
}
}
//# sourceMappingURL=LogParserErrorsPlugin.js.map