From b9eb8c74e0537aa5994776e280d542eab9661f82 Mon Sep 17 00:00:00 2001 From: John Resig Date: Mon, 4 May 2015 15:59:18 -0400 Subject: [PATCH] Expose a new .__parse() method for generating a parse tree from a math expression. --- katex.js | 14 ++++++++++++++ test/katex-spec.js | 25 +++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/katex.js b/katex.js index b876fb074..8fdae0a2e 100644 --- a/katex.js +++ b/katex.js @@ -52,8 +52,22 @@ var renderToString = function(expression, options) { return buildTree(tree, expression, settings).toMarkup(); }; +/** + * Parse an expression and return the parse tree. + */ +var generateParseTree = function(expression, options) { + var settings = new Settings(options); + return parseTree(expression, settings); +}; + module.exports = { render: render, renderToString: renderToString, + /** + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __parse: generateParseTree, ParseError: ParseError }; diff --git a/test/katex-spec.js b/test/katex-spec.js index de8df3538..5131ec6bd 100644 --- a/test/katex-spec.js +++ b/test/katex-spec.js @@ -1116,6 +1116,31 @@ describe("A markup generator", function() { }); }); +describe("A parse tree generator", function() { + it("generates a tree", function() { + var tree = katex.__parse("\\sigma^2"); + expect(JSON.stringify(tree)).toEqual(JSON.stringify([ + { + "type": "supsub", + "value": { + "base": { + "type": "mathord", + "value": "\\sigma", + "mode": "math" + }, + "sup": { + "type": "textord", + "value": "2", + "mode": "math" + }, + "sub": undefined + }, + "mode": "math" + } + ])); + }); +}); + describe("An accent parser", function() { it("should not fail", function() { expect("\\vec{x}").toParse();