/** * This is the ParseError class, which is the main error thrown by KaTeX * functions when something has gone wrong. This is used to distinguish internal * errors from errors in the expression that the user provided. */ function ParseError(message, lexer, position) { var error = "KaTeX parse error: " + message; if (lexer !== undefined && position !== undefined) { // If we have the input and a position, make the error a bit fancier // Prepend some information error += " at position " + position + ": "; // Get the input var input = lexer._input; // Insert a combining underscore at the correct position input = input.slice(0, position) + "\u0332" + input.slice(position); // Extract some context from the input and add it to the error var begin = Math.max(0, position - 15); var end = position + 15; error += input.slice(begin, end); } // Some hackery to make ParseError a prototype of Error // See http://stackoverflow.com/a/8460753 var self = new Error(error); self.name = "ParseError"; self.__proto__ = ParseError.prototype; self.position = position; return self; } // More hackery ParseError.prototype.__proto__ = Error.prototype; module.exports = ParseError;