commit 86914863924d9c814e1e0fb5d750fab819a504a1
parent c87b20aadde0318b5c221deb8741c8ed4dd90fff
Author: John Resig <jeresig@gmail.com>
Date: Thu, 7 May 2015 11:09:48 -0400
Merge pull request #227 from jeresig/parseTree
Expose a new .__parse() method for generating a parse tree from a math expression
Diffstat:
2 files changed, 39 insertions(+), 0 deletions(-)
diff --git 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
@@ -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();