commit b9eb8c74e0537aa5994776e280d542eab9661f82
parent 1f90b365180d74bf30d49815f2b78b01b81522c6
Author: John Resig <jeresig@gmail.com>
Date: Mon, 4 May 2015 15:59:18 -0400
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();