From 10265332afd8b1cf01ca139d827347ca1c824719 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 13 Oct 2022 21:39:47 +0900 Subject: [PATCH 1/4] Support mtable, mtd, mtr for draw matrix. --- .../flutter_html_math/lib/flutter_html_math.dart | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/flutter_html_math/lib/flutter_html_math.dart b/packages/flutter_html_math/lib/flutter_html_math.dart index 8785d410de..8866d7cffa 100644 --- a/packages/flutter_html_math/lib/flutter_html_math.dart +++ b/packages/flutter_html_math/lib/flutter_html_math.dart @@ -39,7 +39,7 @@ CustomRenderMatcher mathMatcher() => (context) { String _parseMathRecursive(dom.Node node, String parsed) { if (node is dom.Element) { List nodeList = node.nodes.whereType().toList(); - if (node.localName == "math" || node.localName == "mrow") { + if (node.localName == "math" || node.localName == "mrow" || node.localName == "mtr") { for (var element in nodeList) { parsed = _parseMathRecursive(element, parsed); } @@ -98,6 +98,16 @@ String _parseMathRecursive(dom.Node node, String parsed) { parsed = parsed + node.text.trim(); } } + if (node.localName == 'mtable') { + String inner = nodeList.map((e) => parseMathRecursive(e, '')).join(' \\\\'); + parsed = parsed + '\\begin{matrix}${inner}\\end{matrix}'; + } + if (node.localName == "mtd") { + nodeList.forEach((element) { + parsed = parseMathRecursive(element, parsed); + }); + parsed = parsed + ' & '; + } } return parsed; } From 8dfa994b1db3bc914022871b0a0984d28b14c092 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Oct 2022 22:12:24 +0900 Subject: [PATCH 2/4] fix --- packages/flutter_html_math/lib/flutter_html_math.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/flutter_html_math/lib/flutter_html_math.dart b/packages/flutter_html_math/lib/flutter_html_math.dart index 8866d7cffa..83b3efb99b 100644 --- a/packages/flutter_html_math/lib/flutter_html_math.dart +++ b/packages/flutter_html_math/lib/flutter_html_math.dart @@ -99,14 +99,14 @@ String _parseMathRecursive(dom.Node node, String parsed) { } } if (node.localName == 'mtable') { - String inner = nodeList.map((e) => parseMathRecursive(e, '')).join(' \\\\'); - parsed = parsed + '\\begin{matrix}${inner}\\end{matrix}'; + String inner = nodeList.map((e) => _parseMathRecursive(e, '')).join(' \\\\'); + parsed = '$parsed\\begin{matrix}$inner\\end{matrix}'; } if (node.localName == "mtd") { nodeList.forEach((element) { - parsed = parseMathRecursive(element, parsed); + parsed = _parseMathRecursive(element, parsed); }); - parsed = parsed + ' & '; + parsed = '$parsed & '; } } return parsed; From c3b8cccc5e9c5888fd89de3bd36666d5e401253a Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Oct 2022 22:17:28 +0900 Subject: [PATCH 3/4] pp --- packages/flutter_html_math/lib/flutter_html_math.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/flutter_html_math/lib/flutter_html_math.dart b/packages/flutter_html_math/lib/flutter_html_math.dart index 83b3efb99b..60df0340e1 100644 --- a/packages/flutter_html_math/lib/flutter_html_math.dart +++ b/packages/flutter_html_math/lib/flutter_html_math.dart @@ -103,9 +103,9 @@ String _parseMathRecursive(dom.Node node, String parsed) { parsed = '$parsed\\begin{matrix}$inner\\end{matrix}'; } if (node.localName == "mtd") { - nodeList.forEach((element) { + for (var element in nodeList) { parsed = _parseMathRecursive(element, parsed); - }); + } parsed = '$parsed & '; } } From 094e3121c1f485eb98b0d8b3e0ce105b6ca86ccb Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 14 Oct 2022 22:44:31 +0900 Subject: [PATCH 4/4] format. --- packages/flutter_html_math/lib/flutter_html_math.dart | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/flutter_html_math/lib/flutter_html_math.dart b/packages/flutter_html_math/lib/flutter_html_math.dart index 60df0340e1..088635f321 100644 --- a/packages/flutter_html_math/lib/flutter_html_math.dart +++ b/packages/flutter_html_math/lib/flutter_html_math.dart @@ -39,7 +39,9 @@ CustomRenderMatcher mathMatcher() => (context) { String _parseMathRecursive(dom.Node node, String parsed) { if (node is dom.Element) { List nodeList = node.nodes.whereType().toList(); - if (node.localName == "math" || node.localName == "mrow" || node.localName == "mtr") { + if (node.localName == "math" || + node.localName == "mrow" || + node.localName == "mtr") { for (var element in nodeList) { parsed = _parseMathRecursive(element, parsed); } @@ -99,7 +101,8 @@ String _parseMathRecursive(dom.Node node, String parsed) { } } if (node.localName == 'mtable') { - String inner = nodeList.map((e) => _parseMathRecursive(e, '')).join(' \\\\'); + String inner = + nodeList.map((e) => _parseMathRecursive(e, '')).join(' \\\\'); parsed = '$parsed\\begin{matrix}$inner\\end{matrix}'; } if (node.localName == "mtd") {