UNPKG

@argdown/node

Version:

Async Argdown application for node.js

41 lines 2.04 kB
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