mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-05 03:08:40 +00:00
add support for unicode angle brackets, single vertical bar, double vertical bar (#1123)
* add support for unicode angle brackets * add tests, remove vertical bar changes * fix 'message not a function' errors
This commit is contained in:
@@ -17,13 +17,13 @@ beforeEach(function() {
|
||||
parseTree(actual, defaultSettings);
|
||||
return {
|
||||
pass: false,
|
||||
message: "'" + actual + "' parsed without error",
|
||||
message: () => "'" + actual + "' parsed without error",
|
||||
};
|
||||
} catch (e) {
|
||||
if (expected === undefined) {
|
||||
return {
|
||||
pass: true,
|
||||
message: "'" + actual + "' parsed with error",
|
||||
message: () => "'" + actual + "' parsed with error",
|
||||
};
|
||||
}
|
||||
const msg = e.message;
|
||||
@@ -31,20 +31,20 @@ beforeEach(function() {
|
||||
if (msg === exp) {
|
||||
return {
|
||||
pass: true,
|
||||
message: "'" + actual + "'" +
|
||||
message: () => "'" + actual + "'" +
|
||||
" parsed with error '" + expected + "'",
|
||||
};
|
||||
} else if (msg.slice(0, 19) === prefix) {
|
||||
return {
|
||||
pass: false,
|
||||
message: "'" + actual + "'" +
|
||||
message: () => "'" + actual + "'" +
|
||||
" parsed with error '" + msg.slice(19) +
|
||||
"' but expected '" + expected + "'",
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
pass: false,
|
||||
message: "'" + actual + "'" +
|
||||
message: () => "'" + actual + "'" +
|
||||
" caused error '" + msg +
|
||||
"' but expected '" + exp + "'",
|
||||
};
|
||||
|
@@ -107,6 +107,21 @@ const parseAndSetResult = function(expr, result, settings) {
|
||||
}
|
||||
};
|
||||
|
||||
const buildAndSetResult = function(expr, result, settings) {
|
||||
try {
|
||||
return _getBuilt(expr, settings || defaultSettings);
|
||||
} catch (e) {
|
||||
result.pass = false;
|
||||
if (e instanceof ParseError) {
|
||||
result.message = "'" + expr + "' failed " +
|
||||
"parsing with error: " + e.message;
|
||||
} else {
|
||||
result.message = "'" + expr + "' failed " +
|
||||
"parsing with unknown error: " + e.message;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
beforeEach(function() {
|
||||
expect.extend({
|
||||
toParse: function(actual, settings) {
|
||||
@@ -114,7 +129,7 @@ beforeEach(function() {
|
||||
|
||||
const result = {
|
||||
pass: true,
|
||||
message: "'" + actual + "' succeeded parsing",
|
||||
message: () => "'" + actual + "' succeeded parsing",
|
||||
};
|
||||
parseAndSetResult(actual, result, usedSettings);
|
||||
return result;
|
||||
@@ -125,7 +140,7 @@ beforeEach(function() {
|
||||
|
||||
const result = {
|
||||
pass: false,
|
||||
message: "Expected '" + actual + "' to fail " +
|
||||
message: () => "Expected '" + actual + "' to fail " +
|
||||
"parsing, but it succeeded",
|
||||
};
|
||||
|
||||
@@ -150,7 +165,7 @@ beforeEach(function() {
|
||||
|
||||
const result = {
|
||||
pass: true,
|
||||
message: "'" + actual + "' succeeded in building",
|
||||
message: () => "'" + actual + "' succeeded in building",
|
||||
};
|
||||
|
||||
expect(actual).toParse(usedSettings);
|
||||
@@ -176,7 +191,7 @@ beforeEach(function() {
|
||||
|
||||
const result = {
|
||||
pass: true,
|
||||
message: "Parse trees of '" + actual +
|
||||
message: () => "Parse trees of '" + actual +
|
||||
"' and '" + expected + "' are equivalent",
|
||||
};
|
||||
|
||||
@@ -196,7 +211,38 @@ beforeEach(function() {
|
||||
|
||||
if (JSON.stringify(actualTree) !== JSON.stringify(expectedTree)) {
|
||||
result.pass = false;
|
||||
result.message = "Parse trees of '" + actual +
|
||||
result.message = () => "Parse trees of '" + actual +
|
||||
"' and '" + expected + "' are not equivalent";
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
toBuildLike: function(actual, expected, settings) {
|
||||
const usedSettings = settings ? settings : defaultSettings;
|
||||
|
||||
const result = {
|
||||
pass: true,
|
||||
message: () => "Build trees of '" + actual +
|
||||
"' and '" + expected + "' are equivalent",
|
||||
};
|
||||
|
||||
const actualTree = buildAndSetResult(actual, result,
|
||||
usedSettings);
|
||||
if (!actualTree) {
|
||||
return result;
|
||||
}
|
||||
const expectedTree = buildAndSetResult(expected, result,
|
||||
usedSettings);
|
||||
if (!expectedTree) {
|
||||
return result;
|
||||
}
|
||||
|
||||
stripPositions(actualTree);
|
||||
stripPositions(expectedTree);
|
||||
|
||||
if (JSON.stringify(actualTree) !== JSON.stringify(expectedTree)) {
|
||||
result.pass = false;
|
||||
result.message = () => "Parse trees of '" + actual +
|
||||
"' and '" + expected + "' are not equivalent";
|
||||
}
|
||||
return result;
|
||||
@@ -1212,6 +1258,19 @@ describe("A left/right parser", function() {
|
||||
});
|
||||
});
|
||||
|
||||
describe("left/right builder", () => {
|
||||
const cases = [
|
||||
['\\left\\langle \\right\\rangle', '\\left< \\right>'],
|
||||
['\\left\\langle \\right\\rangle', '\\left\u27e8 \\right\u27e9'],
|
||||
];
|
||||
|
||||
for (const [actual, expected] of cases) {
|
||||
it(`should build "${actual}" like "${expected}"`, () => {
|
||||
expect(actual).toBuildLike(expected);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
describe("A begin/end parser", function() {
|
||||
|
||||
it("should parse a simple environment", function() {
|
||||
|
@@ -16,10 +16,10 @@ const parseAndSetResult = function(expr, result, settings) {
|
||||
} catch (e) {
|
||||
result.pass = false;
|
||||
if (e instanceof ParseError) {
|
||||
result.message = "'" + expr + "' failed " +
|
||||
result.message = () => "'" + expr + "' failed " +
|
||||
"parsing with error: " + e.message;
|
||||
} else {
|
||||
result.message = "'" + expr + "' failed " +
|
||||
result.message = () => "'" + expr + "' failed " +
|
||||
"parsing with unknown error: " + e.message;
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ describe("unicode", function() {
|
||||
|
||||
const result = {
|
||||
pass: true,
|
||||
message: "'" + actual + "' succeeded parsing",
|
||||
message: () => "'" + actual + "' succeeded parsing",
|
||||
};
|
||||
parseAndSetResult(actual, result, usedSettings);
|
||||
return result;
|
||||
@@ -45,7 +45,7 @@ describe("unicode", function() {
|
||||
|
||||
const result = {
|
||||
pass: false,
|
||||
message: "Expected '" + actual + "' to fail " +
|
||||
message: () => "Expected '" + actual + "' to fail " +
|
||||
"parsing, but it succeeded",
|
||||
};
|
||||
|
||||
@@ -54,10 +54,10 @@ describe("unicode", function() {
|
||||
} catch (e) {
|
||||
if (e instanceof ParseError) {
|
||||
result.pass = true;
|
||||
result.message = "'" + actual + "' correctly " +
|
||||
result.message = () => "'" + actual + "' correctly " +
|
||||
"didn't parse with error: " + e.message;
|
||||
} else {
|
||||
result.message = "'" + actual + "' failed " +
|
||||
result.message = () => "'" + actual + "' failed " +
|
||||
"parsing with unknown error: " + e.message;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user