@@ -901,16 +901,16 @@ class ContentExample {
901
901
'<tbody>\n <tr>\n <td>1</td>\n <td>2</td>\n <td>3</td>\n <td>4</td>\n </tr>\n </tbody>\n </table>' , [
902
902
TableNode (rows: [
903
903
TableRowNode (cells: [
904
- TableCellNode (nodes: [TextNode ('a' )], links: []),
905
- TableCellNode (nodes: [TextNode ('b' )], links: []),
906
- TableCellNode (nodes: [TextNode ('c' )], links: []),
907
- TableCellNode (nodes: [TextNode ('d' )], links: []),
904
+ TableCellNode (nodes: [TextNode ('a' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
905
+ TableCellNode (nodes: [TextNode ('b' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
906
+ TableCellNode (nodes: [TextNode ('c' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
907
+ TableCellNode (nodes: [TextNode ('d' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
908
908
], isHeader: true ),
909
909
TableRowNode (cells: [
910
- TableCellNode (nodes: [TextNode ('1' )], links: []),
911
- TableCellNode (nodes: [TextNode ('2' )], links: []),
912
- TableCellNode (nodes: [TextNode ('3' )], links: []),
913
- TableCellNode (nodes: [TextNode ('4' )], links: []),
910
+ TableCellNode (nodes: [TextNode ('1' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
911
+ TableCellNode (nodes: [TextNode ('2' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
912
+ TableCellNode (nodes: [TextNode ('3' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
913
+ TableCellNode (nodes: [TextNode ('4' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
914
914
], isHeader: false ),
915
915
]),
916
916
]);
@@ -925,24 +925,24 @@ class ContentExample {
925
925
'<tr>\n <td>body31</td>\n <td>body32</td>\n <td>body33</td>\n </tr>\n </tbody>\n </table>' , [
926
926
TableNode (rows: [
927
927
TableRowNode (cells: [
928
- TableCellNode (nodes: [TextNode ('heading 1' )], links: []),
929
- TableCellNode (nodes: [TextNode ('heading 2' )], links: []),
930
- TableCellNode (nodes: [TextNode ('heading 3' )], links: []),
928
+ TableCellNode (nodes: [TextNode ('heading 1' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
929
+ TableCellNode (nodes: [TextNode ('heading 2' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
930
+ TableCellNode (nodes: [TextNode ('heading 3' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
931
931
], isHeader: true ),
932
932
TableRowNode (cells: [
933
- TableCellNode (nodes: [TextNode ('body11' )], links: []),
934
- TableCellNode (nodes: [TextNode ('body12' )], links: []),
935
- TableCellNode (nodes: [TextNode ('body13' )], links: []),
933
+ TableCellNode (nodes: [TextNode ('body11' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
934
+ TableCellNode (nodes: [TextNode ('body12' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
935
+ TableCellNode (nodes: [TextNode ('body13' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
936
936
], isHeader: false ),
937
937
TableRowNode (cells: [
938
- TableCellNode (nodes: [TextNode ('body21' )], links: []),
939
- TableCellNode (nodes: [TextNode ('body22' )], links: []),
940
- TableCellNode (nodes: [TextNode ('body23' )], links: []),
938
+ TableCellNode (nodes: [TextNode ('body21' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
939
+ TableCellNode (nodes: [TextNode ('body22' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
940
+ TableCellNode (nodes: [TextNode ('body23' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
941
941
], isHeader: false ),
942
942
TableRowNode (cells: [
943
- TableCellNode (nodes: [TextNode ('body31' )], links: []),
944
- TableCellNode (nodes: [TextNode ('body32' )], links: []),
945
- TableCellNode (nodes: [TextNode ('body33' )], links: []),
943
+ TableCellNode (nodes: [TextNode ('body31' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
944
+ TableCellNode (nodes: [TextNode ('body32' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
945
+ TableCellNode (nodes: [TextNode ('body33' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
946
946
], isHeader: false ),
947
947
]),
948
948
]);
@@ -955,16 +955,16 @@ class ContentExample {
955
955
'<tbody>\n <tr>\n <td>text</td>\n <td>text</td>\n <td>text</td>\n <td>text</td>\n </tr>\n </tbody>\n </table>' , [
956
956
TableNode (rows: [
957
957
TableRowNode (cells: [
958
- TableCellNode (nodes: [TextNode ('normal heading' )], links: []),
959
- TableCellNode (nodes: [EmphasisNode (nodes: [TextNode ('italic heading' )])], links: []),
960
- TableCellNode (nodes: [StrongNode (nodes: [TextNode ('bold heading' )])], links: []),
961
- TableCellNode (nodes: [StrongNode (nodes: [EmphasisNode (nodes: [TextNode ('italic bold heading' )])])], links: []),
958
+ TableCellNode (nodes: [TextNode ('normal heading' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
959
+ TableCellNode (nodes: [EmphasisNode (nodes: [TextNode ('italic heading' )])], links: [], textAlignment : TableColumnTextAlignment .defaults ),
960
+ TableCellNode (nodes: [StrongNode (nodes: [TextNode ('bold heading' )])], links: [], textAlignment : TableColumnTextAlignment .defaults ),
961
+ TableCellNode (nodes: [StrongNode (nodes: [EmphasisNode (nodes: [TextNode ('italic bold heading' )])])], links: [], textAlignment : TableColumnTextAlignment .defaults ),
962
962
], isHeader: true ),
963
963
TableRowNode (cells: [
964
- TableCellNode (nodes: [TextNode ('text' )], links: []),
965
- TableCellNode (nodes: [TextNode ('text' )], links: []),
966
- TableCellNode (nodes: [TextNode ('text' )], links: []),
967
- TableCellNode (nodes: [TextNode ('text' )], links: []),
964
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
965
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
966
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
967
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
968
968
], isHeader: false ),
969
969
]),
970
970
]);
@@ -977,10 +977,10 @@ class ContentExample {
977
977
'<tbody>\n <tr>\n <td><a href="https://zulip.com">https://zulip.com</a></td>\n </tr>\n </tbody>\n </table>' , [
978
978
TableNode (rows: [
979
979
TableRowNode (cells: [
980
- TableCellNode (nodes: [LinkNode (nodes: [TextNode ('https://zulip.com' )], url: 'https://zulip.com' )], links: []),
980
+ TableCellNode (nodes: [LinkNode (nodes: [TextNode ('https://zulip.com' )], url: 'https://zulip.com' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
981
981
], isHeader: true ),
982
982
TableRowNode (cells: [
983
- TableCellNode (nodes: [LinkNode (nodes: [TextNode ('https://zulip.com' )], url: 'https://zulip.com' )], links: []),
983
+ TableCellNode (nodes: [LinkNode (nodes: [TextNode ('https://zulip.com' )], url: 'https://zulip.com' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
984
984
], isHeader: false ),
985
985
]),
986
986
]);
@@ -994,10 +994,10 @@ class ContentExample {
994
994
'<div class="message_inline_image"><a href="/user_uploads/2/6f/KS3vNT9c2tbMfMBkSbQF_Jlj/image2.jpg" title="image2.jpg"><img data-original-dimensions="2760x4912" src="/user_uploads/thumbnail/2/6f/KS3vNT9c2tbMfMBkSbQF_Jlj/image2.jpg/840x560.webp"></a></div>' , [
995
995
TableNode (rows: [
996
996
TableRowNode (cells: [
997
- TableCellNode (nodes: [TextNode ('a' )], links: []),
997
+ TableCellNode (nodes: [TextNode ('a' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
998
998
], isHeader: true ),
999
999
TableRowNode (cells: [
1000
- TableCellNode (nodes: [LinkNode (nodes: [TextNode ('image2.jpg' )], url: '/user_uploads/2/6f/KS3vNT9c2tbMfMBkSbQF_Jlj/image2.jpg' )], links: []),
1000
+ TableCellNode (nodes: [LinkNode (nodes: [TextNode ('image2.jpg' )], url: '/user_uploads/2/6f/KS3vNT9c2tbMfMBkSbQF_Jlj/image2.jpg' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1001
1001
], isHeader: false ),
1002
1002
]),
1003
1003
ImageNodeList ([
@@ -1021,10 +1021,10 @@ class ContentExample {
1021
1021
'<tbody>\n <tr>\n <td></td>\n </tr>\n </tbody>\n </table>' , [
1022
1022
TableNode (rows: [
1023
1023
TableRowNode (cells: [
1024
- TableCellNode (nodes: [TextNode ('table' )], links: []),
1024
+ TableCellNode (nodes: [TextNode ('table' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1025
1025
], isHeader: true ),
1026
1026
TableRowNode (cells: [
1027
- TableCellNode (nodes: [], links: []),
1027
+ TableCellNode (nodes: [], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1028
1028
], isHeader: false ),
1029
1029
]),
1030
1030
]);
@@ -1037,12 +1037,58 @@ class ContentExample {
1037
1037
'<tbody>\n <tr>\n <td>text</td>\n <td></td>\n </tr>\n </tbody>\n </table>' , [
1038
1038
TableNode (rows: [
1039
1039
TableRowNode (cells: [
1040
- TableCellNode (nodes: [TextNode ('a' )], links: []),
1041
- TableCellNode (nodes: [TextNode ('b' )], links: []),
1040
+ TableCellNode (nodes: [TextNode ('a' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1041
+ TableCellNode (nodes: [TextNode ('b' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1042
1042
], isHeader: true ),
1043
1043
TableRowNode (cells: [
1044
- TableCellNode (nodes: [TextNode ('text' )], links: []),
1045
- TableCellNode (nodes: [], links: []),
1044
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment: TableColumnTextAlignment .defaults),
1045
+ TableCellNode (nodes: [], links: [], textAlignment: TableColumnTextAlignment .defaults),
1046
+ ], isHeader: false ),
1047
+ ]),
1048
+ ]);
1049
+
1050
+ static const tableWithDifferentTextAlignmentInColumns = ContentExample (
1051
+ 'table with different text alignment in columns' ,
1052
+ // https://chat.zulip.org/#narrow/channel/7-test-here/topic/Rajesh/near/1971201
1053
+ '| default-aligned | left-aligned | center-aligned | right-aligned |\n | - | :- | :-: | -: |\n | text | text | text | text |\n | long text long text long text | long text long text long text | long text long text long text | long text long text long text |' ,
1054
+ '<table>\n <thead>\n <tr>\n <th>default-aligned</th>\n <th style="text-align: left;">left-aligned</th>\n <th style="text-align: center;">center-aligned</th>\n <th style="text-align: right;">right-aligned</th>\n </tr>\n </thead>\n '
1055
+ '<tbody>\n <tr>\n <td>text</td>\n <td style="text-align: left;">text</td>\n <td style="text-align: center;">text</td>\n <td style="text-align: right;">text</td>\n </tr>\n '
1056
+ '<tr>\n <td>long text long text long text</td>\n <td style="text-align: left;">long text long text long text</td>\n <td style="text-align: center;">long text long text long text</td>\n <td style="text-align: right;">long text long text long text</td>\n </tr>\n '
1057
+ '</tbody>\n </table>' , [
1058
+ TableNode (rows: [
1059
+ TableRowNode (cells: [
1060
+ TableCellNode (nodes: [TextNode ('default-aligned' )], links: [], textAlignment: TableColumnTextAlignment .defaults),
1061
+ TableCellNode (nodes: [TextNode ('left-aligned' )], links: [], textAlignment: TableColumnTextAlignment .left),
1062
+ TableCellNode (nodes: [TextNode ('center-aligned' )], links: [], textAlignment: TableColumnTextAlignment .center),
1063
+ TableCellNode (nodes: [TextNode ('right-aligned' )], links: [], textAlignment: TableColumnTextAlignment .right),
1064
+ ], isHeader: true ),
1065
+ TableRowNode (cells: [
1066
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment: TableColumnTextAlignment .defaults),
1067
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment: TableColumnTextAlignment .left),
1068
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment: TableColumnTextAlignment .center),
1069
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment: TableColumnTextAlignment .right),
1070
+ ], isHeader: false ),
1071
+ TableRowNode (cells: [
1072
+ TableCellNode (nodes: [TextNode ('long text long text long text' )], links: [], textAlignment: TableColumnTextAlignment .defaults),
1073
+ TableCellNode (nodes: [TextNode ('long text long text long text' )], links: [], textAlignment: TableColumnTextAlignment .left),
1074
+ TableCellNode (nodes: [TextNode ('long text long text long text' )], links: [], textAlignment: TableColumnTextAlignment .center),
1075
+ TableCellNode (nodes: [TextNode ('long text long text long text' )], links: [], textAlignment: TableColumnTextAlignment .right),
1076
+ ], isHeader: false ),
1077
+ ]),
1078
+ ]);
1079
+
1080
+ static const tableWithLinkCenterAligned = ContentExample (
1081
+ 'table with link; center aligned' ,
1082
+ // https://chat.zulip.org/#narrow/channel/7-test-here/topic/.E2.9C.94.20Rajesh/near/1987982
1083
+ '| header |\n | :-: |\n | https://zulip.com |' ,
1084
+ '<table>\n <thead>\n <tr>\n <th style="text-align: center;">header</th>\n </tr>\n </thead>\n '
1085
+ '<tbody>\n <tr>\n <td style="text-align: center;"><a href="https://zulip.com">https://zulip.com</a></td>\n </tr>\n </tbody>\n </table>' , [
1086
+ TableNode (rows: [
1087
+ TableRowNode (cells: [
1088
+ TableCellNode (nodes: [TextNode ('header' )], links: [], textAlignment: TableColumnTextAlignment .center),
1089
+ ], isHeader: true ),
1090
+ TableRowNode (cells: [
1091
+ TableCellNode (nodes: [LinkNode (nodes: [TextNode ('https://zulip.com' )], url: 'https://zulip.com' )], links: [], textAlignment: TableColumnTextAlignment .center),
1046
1092
], isHeader: false ),
1047
1093
]),
1048
1094
]);
@@ -1382,6 +1428,8 @@ void main() {
1382
1428
testParseExample (ContentExample .tableWithImage);
1383
1429
testParseExample (ContentExample .tableWithoutAnyBodyCellsInMarkdown);
1384
1430
testParseExample (ContentExample .tableMissingOneBodyColumnInMarkdown);
1431
+ testParseExample (ContentExample .tableWithDifferentTextAlignmentInColumns);
1432
+ testParseExample (ContentExample .tableWithLinkCenterAligned);
1385
1433
1386
1434
testParse ('parse nested lists, quotes, headings, code blocks' ,
1387
1435
// "1. > ###### two\n > * three\n\n four"
0 commit comments