Skip to content

Commit

Permalink
feat: Support mmultiscripts. (#1175)
Browse files Browse the repository at this point in the history
  • Loading branch information
fukatani committed May 9, 2023
1 parent 9ca2308 commit a999a30
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions packages/flutter_html_math/lib/flutter_html_math.dart
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,51 @@ String _parseMathRecursive(dom.Node node, String parsed) {
}
parsed = '$parsed & ';
}
if (node.localName == "mmultiscripts") {
String base = _parseMathRecursive(nodeList[0], "");
String preSubScripts = "";
String preSuperScripts = "";
String postSubScripts = "";
String postSuperScripts = "";
bool isPostScripts = true;
bool isSubScripts = true;
for (var element in nodeList.skip(1)) {
if (element.localName == "mprescripts") {
isPostScripts = false;
isSubScripts = true;
continue;
}

if (isPostScripts) {
if (isSubScripts) {
postSubScripts = _parseMathRecursive(element, postSubScripts);
} else {
postSuperScripts = _parseMathRecursive(element, postSuperScripts);
}
} else {
if (isSubScripts) {
preSubScripts = _parseMathRecursive(element, preSubScripts);
} else {
preSuperScripts = _parseMathRecursive(element, preSuperScripts);
}
}
isSubScripts = !isSubScripts;
}
if (preSubScripts.isNotEmpty) {
preSubScripts = "_$preSubScripts";
}
if (preSuperScripts.isNotEmpty) {
preSuperScripts = "^$preSuperScripts";
}
if (postSubScripts.isNotEmpty) {
postSubScripts = "_$postSubScripts";
}
if (postSuperScripts.isNotEmpty) {
postSuperScripts = "^$postSuperScripts";
}
parsed =
"$parsed{}$preSubScripts$preSuperScripts $base$postSubScripts$postSuperScripts ";
}
}
return parsed;
}
Expand Down

0 comments on commit a999a30

Please sign in to comment.