Convert ParseNode to struct (#1534)

* Define the nested version of ParseNodes structs explicitly.

Passes test:jest, but fails test:flow.

* Fix additional type errors reported by flow.

* Migrate rebased code from master.

* Rename ParseNode.js to parseNode.js.

* Update defineEnvironment output type to fix the flow errors in environment/array.js.
This commit is contained in:
Ashish Myles
2018-08-01 02:41:27 -04:00
committed by ylemkimon
parent 2202aa774f
commit 0ac4b6e89d
50 changed files with 1386 additions and 866 deletions

View File

@@ -4,7 +4,7 @@ import buildCommon from "../buildCommon";
import delimiter from "../delimiter";
import mathMLTree from "../mathMLTree";
import Style from "../Style";
import ParseNode, {assertNodeType, checkNodeType} from "../ParseNode";
import {assertNodeType, checkNodeType} from "../parseNode";
import * as html from "../buildHTML";
import * as mml from "../buildMathML";
@@ -281,17 +281,21 @@ defineFunction({
break;
}
return new ParseNode("genfrac", {
return {
type: "genfrac",
continued: funcName === "\\cfrac",
numer: numer,
denom: denom,
hasBarLine: hasBarLine,
leftDelim: leftDelim,
rightDelim: rightDelim,
size: size,
barSize: null,
}, parser.mode);
mode: parser.mode,
value: {
type: "genfrac",
continued: funcName === "\\cfrac",
numer: numer,
denom: denom,
hasBarLine: hasBarLine,
leftDelim: leftDelim,
rightDelim: rightDelim,
size: size,
barSize: null,
},
};
},
htmlBuilder,
@@ -328,11 +332,15 @@ defineFunction({
default:
throw new Error("Unrecognized infix genfrac command");
}
return new ParseNode("infix", {
return {
type: "infix",
replaceWith: replaceWith,
token: token,
}, parser.mode);
mode: parser.mode,
value: {
type: "infix",
replaceWith: replaceWith,
token: token,
},
};
},
});
@@ -401,17 +409,21 @@ defineFunction({
size = stylArray[Number(styl.value)];
}
return new ParseNode("genfrac", {
return {
type: "genfrac",
numer: numer,
denom: denom,
continued: false,
hasBarLine: hasBarLine,
barSize: barSize,
leftDelim: leftDelim,
rightDelim: rightDelim,
size: size,
}, parser.mode);
mode: parser.mode,
value: {
type: "genfrac",
numer: numer,
denom: denom,
continued: false,
hasBarLine: hasBarLine,
barSize: barSize,
leftDelim: leftDelim,
rightDelim: rightDelim,
size: size,
},
};
},
htmlBuilder,
@@ -429,12 +441,16 @@ defineFunction({
},
handler({parser, funcName, token}, args) {
const sizeNode = assertNodeType(args[0], "size");
return new ParseNode("infix", {
return {
type: "infix",
replaceWith: "\\\\abovefrac",
sizeNode: sizeNode,
token: token,
}, parser.mode);
mode: parser.mode,
value: {
type: "infix",
replaceWith: "\\\\abovefrac",
sizeNode: sizeNode,
token: token,
},
};
},
});
@@ -453,17 +469,21 @@ defineFunction({
const barSize = sizeNode.value.value;
const hasBarLine = barSize.number > 0;
return new ParseNode("genfrac", {
return {
type: "genfrac",
numer: numer,
denom: denom,
continued: false,
hasBarLine: hasBarLine,
barSize: barSize,
leftDelim: null,
rightDelim: null,
size: "auto",
}, parser.mode);
mode: parser.mode,
value: {
type: "genfrac",
numer: numer,
denom: denom,
continued: false,
hasBarLine: hasBarLine,
barSize: barSize,
leftDelim: null,
rightDelim: null,
size: "auto",
},
};
},
htmlBuilder,