mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-05 11:18:39 +00:00
Move js files into src/
Test plan: - Make sure huxley tests, jasmine tests, make build, make metrics, make test all still work. Auditors: alpert
This commit is contained in:
38
src/ParseError.js
Normal file
38
src/ParseError.js
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* 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;
|
||||
return self;
|
||||
}
|
||||
|
||||
// More hackery
|
||||
ParseError.prototype.__proto__ = Error.prototype;
|
||||
|
||||
module.exports = ParseError;
|
Reference in New Issue
Block a user