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 3fd243193..c1aa5f710 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 5f9f5725b..7a54e073c 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 49395d9e9..b1dd30dbd 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 21fd4f479..62eceb3ae 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 927cd9d66..52f34425d 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 f03df4d73..5540f5e44 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"] || "";