Spaces:
Running
on
T4
Running
on
T4
/** | |
* 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; | |