From e1c221273c1ac74f7a7cd98658a842e66993dfd4 Mon Sep 17 00:00:00 2001 From: Jeff Everett Date: Mon, 27 Jul 2015 03:45:19 -0600 Subject: [PATCH] Added support for visual depiction of unsupported commands --- README.md | 3 + src/Parser.js | 66 +++++++++++++- src/Settings.js | 2 + src/buildCommon.js | 6 +- test/katex-spec.js | 86 ++++++++++++++---- .../images/UnsupportedCmds-chrome.png | Bin 0 -> 31353 bytes .../images/UnsupportedCmds-firefox.png | Bin 0 -> 25670 bytes test/screenshotter/ss_data.json | 1 + test/screenshotter/test.html | 13 ++- 9 files changed, 152 insertions(+), 25 deletions(-) create mode 100644 test/screenshotter/images/UnsupportedCmds-chrome.png create mode 100644 test/screenshotter/images/UnsupportedCmds-firefox.png diff --git a/README.md b/README.md index 3fd24319..c1aa5f71 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,9 @@ Make sure to include the CSS and font files, but there is no need to include the You can provide an object of options as the last argument to `katex.render` and `katex.renderToString`. Available options are: - `displayMode`: `boolean`. If `true` the math will be rendered in display mode, which will put the math in display style (so `\int` and `\sum` are large, for example), and will center the math on the page on its own line. If `false` the math will be rendered in inline mode. (default: `false`) +- `breakOnUnsupportedCmds`: `boolean`. If `true`, KaTeX will generate a `ParseError` when it encounters an unsupported command. If `false`, KaTeX will render the command as text +in the color given by `errorColor`. (default: `true`) +- `errorColor`: `string`. A color string given in the format `"#XXX"` or `"#XXXXXX"`. This option determines the color which unsupported commands are rendered in. (default: `#cc0000`) For example: diff --git a/src/Parser.js b/src/Parser.js index 5f9f5725..7a54e073 100644 --- a/src/Parser.js +++ b/src/Parser.js @@ -129,6 +129,14 @@ Parser.prototype.parseExpression = function(pos, mode, breakOnInfix, breakOnToke } var atom = this.parseAtom(pos, mode); if (!atom) { + if (!this.settings.breakOnUnsupportedCmds && lex.text[0] === "\\") { + var errorNode = this.handleUnsupportedCmd(lex.text, mode); + body.push(errorNode); + + pos = lex.position; + continue; + } + break; } if (breakOnInfix && atom.result.type === "infix") { @@ -204,8 +212,16 @@ Parser.prototype.handleSupSubscript = function(pos, mode, symbol, name) { var group = this.parseGroup(pos, mode); if (!group) { - throw new ParseError( - "Expected group after '" + symbol + "'", this.lexer, pos); + var lex = this.lexer.lex(pos, mode); + + if (!this.settings.breakOnUnsupportedCmds && lex.text[0] === "\\") { + return new ParseResult( + this.handleUnsupportedCmd(lex.text, mode), + lex.position); + } else { + throw new ParseError( + "Expected group after '" + symbol + "'", this.lexer, pos); + } } else if (group.isFunction) { // ^ and _ have a greediness, so handle interactions with functions' // greediness @@ -223,6 +239,37 @@ Parser.prototype.handleSupSubscript = function(pos, mode, symbol, name) { } }; +/** + * Converts the textual input of an unsupported command into a text node + * contained within a color node whose color is determined by errorColor + */ + Parser.prototype.handleUnsupportedCmd = function(text, mode) { + var textordArray = []; + + for (var i = 0; i < text.length; i++) { + textordArray.push(new ParseNode("textord", text[i], "text")); + } + + var textNode = new ParseNode( + "text", + { + body: textordArray, + type: "text" + }, + mode); + + var colorNode = new ParseNode( + "color", + { + color: this.settings.errorColor, + value: [textNode], + type: "color" + }, + mode); + + return colorNode; + }; + /** * Parses a group with optional super/subscripts. * @@ -498,9 +545,18 @@ Parser.prototype.parseArguments = function(pos, mode, func, funcData, args) { arg = this.parseGroup(newPos, mode); } if (!arg) { - throw new ParseError( - "Expected group after '" + func + "'", - this.lexer, newPos); + var lex = this.lexer.lex(newPos, mode); + + if (!this.settings.breakOnUnsupportedCmds && lex.text[0] === "\\") { + arg = new ParseFuncOrArgument( + new ParseResult( + this.handleUnsupportedCmd(lex.text, mode), + lex.position), + false); + } else { + throw new ParseError( + "Expected group after '" + func + "'", this.lexer, pos); + } } } var argNode; diff --git a/src/Settings.js b/src/Settings.js index 49395d9e..b1dd30db 100644 --- a/src/Settings.js +++ b/src/Settings.js @@ -21,6 +21,8 @@ function Settings(options) { // allow null options options = options || {}; this.displayMode = get(options.displayMode, false); + this.breakOnUnsupportedCmds = get(options.breakOnUnsupportedCmds, true); + this.errorColor = get(options.errorColor, "#cc0000"); } module.exports = Settings; diff --git a/src/buildCommon.js b/src/buildCommon.js index 21fd4f47..62eceb3a 100644 --- a/src/buildCommon.js +++ b/src/buildCommon.js @@ -54,7 +54,11 @@ var mathit = function(value, mode, color, classes) { var mathrm = function(value, mode, color, classes) { // Decide what font to render the symbol in by its entry in the symbols // table. - if (symbols[mode][value].font === "main") { + // Have a special case for when the value = \ because the \ is used as a + // textord in unsupported command errors but cannot be parsed as a regular + // text ordinal and is therefore not present as a symbol in the symbols + // table for text + if (value === "\\" || symbols[mode][value].font === "main") { return makeSymbol(value, "Main-Regular", mode, color, classes); } else { return makeSymbol( diff --git a/test/katex-spec.js b/test/katex-spec.js index 927cd9d6..52f34425 100644 --- a/test/katex-spec.js +++ b/test/katex-spec.js @@ -13,33 +13,39 @@ var Settings = require("../src/Settings"); var defaultSettings = new Settings({}); -var getBuilt = function(expr) { - expect(expr).toBuild(); +var getBuilt = function(expr, settings) { + var usedSettings = settings ? settings : defaultSettings; - var built = buildHTML(parseTree(expr), defaultSettings); + expect(expr).toBuild(usedSettings); + + var parsedTree = parseTree(expr, usedSettings); + var built = buildHTML(parsedTree, usedSettings); // Remove the outer .katex and .katex-inner layers return built.children[2].children; }; -var getParsed = function(expr) { - expect(expr).toParse(); +var getParsed = function(expr, settings) { + var usedSettings = settings ? settings : defaultSettings; - return parseTree(expr, defaultSettings); + expect(expr).toParse(usedSettings); + return parseTree(expr, usedSettings); }; beforeEach(function() { jasmine.addMatchers({ toParse: function() { return { - compare: function(actual) { + compare: function(actual, settings) { + var usedSettings = settings ? settings : defaultSettings; + var result = { pass: true, message: "'" + actual + "' succeeded parsing" }; try { - parseTree(actual, defaultSettings); + parseTree(actual, usedSettings); } catch (e) { result.pass = false; if (e instanceof ParseError) { @@ -58,7 +64,9 @@ beforeEach(function() { toNotParse: function() { return { - compare: function(actual) { + compare: function(actual, settings) { + var usedSettings = settings ? settings : defaultSettings; + var result = { pass: false, message: "Expected '" + actual + "' to fail " + @@ -66,7 +74,7 @@ beforeEach(function() { }; try { - parseTree(actual, defaultSettings); + parseTree(actual, usedSettings); } catch (e) { if (e instanceof ParseError) { result.pass = true; @@ -85,16 +93,18 @@ beforeEach(function() { toBuild: function() { return { - compare: function(actual) { + compare: function(actual, settings) { + var usedSettings = settings ? settings : defaultSettings; + var result = { pass: true, message: "'" + actual + "' succeeded in building" }; - expect(actual).toParse(); + expect(actual).toParse(usedSettings); try { - buildHTML(parseTree(actual), defaultSettings); + buildHTML(parseTree(actual, usedSettings), usedSettings); } catch (e) { result.pass = false; if (e instanceof ParseError) { @@ -1359,10 +1369,12 @@ describe("A cases environment", function() { }); -var getMathML = function(expr) { - expect(expr).toParse(); +var getMathML = function(expr, settings) { + var usedSettings = settings ? settings : defaultSettings; - var built = buildMathML(parseTree(expr)); + expect(expr).toParse(usedSettings); + + var built = buildMathML(parseTree(expr, usedSettings), expr, usedSettings); // Strip off the surrounding return built.children[0]; @@ -1400,3 +1412,45 @@ describe("A MathML builder", function() { expect(phantom.children[0].type).toEqual("mphantom"); }); }); + +describe("A parser that does not break on unsupported commands", function() { + // The parser breaks on unsupported commands unless it is explicitly + // told not to + var errorColor = "#933"; + var doNotBreakSettings = new Settings({ + breakOnUnsupportedCmds: false, + errorColor: errorColor + }); + + it("should still parse on unrecognized control sequences", function() { + expect("\\error").toParse(doNotBreakSettings); + }); + + describe("should allow unrecognized controls sequences anywhere, including", function() { + it("in superscripts and subscripts", function() { + expect("2_\\error").toBuild(doNotBreakSettings); + expect("3^{\\error}_\\error").toBuild(doNotBreakSettings); + expect("\\int\\nolimits^\\error_\\error").toBuild(doNotBreakSettings); + }); + + it("in fractions", function() { + expect("\\frac{345}{\\error}").toBuild(doNotBreakSettings); + expect("\\frac\\error{\\error}").toBuild(doNotBreakSettings); + }); + + it("in square roots", function() { + expect("\\sqrt\\error").toBuild(doNotBreakSettings); + expect("\\sqrt{234\\error}").toBuild(doNotBreakSettings); + }); + + it("in text boxes", function() { + expect("\\text{\\error}").toBuild(doNotBreakSettings); + }); + }); + + it("should produce color nodes with a color value given by errorColor", function() { + var parsedInput = getParsed("\\error", doNotBreakSettings); + expect(parsedInput[0].type).toBe("color"); + expect(parsedInput[0].value.color).toBe(errorColor); + }); +}); diff --git a/test/screenshotter/images/UnsupportedCmds-chrome.png b/test/screenshotter/images/UnsupportedCmds-chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..0c374bb63be23d65454f6d97d2a69b020f9df4b3 GIT binary patch literal 31353 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
moo&m=x^{\\Huge y}z" } diff --git a/test/screenshotter/test.html b/test/screenshotter/test.html index f03df4d7..5540f5e4 100644 --- a/test/screenshotter/test.html +++ b/test/screenshotter/test.html @@ -25,9 +25,16 @@ query[match[1]] = decodeURIComponent(match[2]); } var mathNode = document.getElementById("math"); - katex.render(query["m"], mathNode, { - displayMode: !!query["display"] - }); + + var settings = { + displayMode: !!query["display"], + breakOnUnsupportedCmds: !query["doNotBreak"] + }; + if (query["errorColor"]) { + settings.errorColor = query["errorColor"]; + } + + katex.render(query["m"], mathNode, settings); document.getElementById("pre").innerHTML = query["pre"] || ""; document.getElementById("post").innerHTML = query["post"] || "";