@@ -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 ([
@@ -1017,10 +1017,10 @@ class ContentExample {
1017
1017
'<tbody>\n <tr>\n <td></td>\n </tr>\n </tbody>\n </table>' , [
1018
1018
TableNode (rows: [
1019
1019
TableRowNode (cells: [
1020
- TableCellNode (nodes: [TextNode ('table' )], links: []),
1020
+ TableCellNode (nodes: [TextNode ('table' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1021
1021
], isHeader: true ),
1022
1022
TableRowNode (cells: [
1023
- TableCellNode (nodes: [], links: []),
1023
+ TableCellNode (nodes: [], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1024
1024
], isHeader: false ),
1025
1025
])
1026
1026
]);
@@ -1033,15 +1033,45 @@ class ContentExample {
1033
1033
'<tbody>\n <tr>\n <td>text</td>\n <td></td>\n </tr>\n </tbody>\n </table>' , [
1034
1034
TableNode (rows: [
1035
1035
TableRowNode (cells: [
1036
- TableCellNode (nodes: [TextNode ('a' )], links: []),
1037
- TableCellNode (nodes: [TextNode ('b' )], links: []),
1036
+ TableCellNode (nodes: [TextNode ('a' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1037
+ TableCellNode (nodes: [TextNode ('b' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1038
1038
], isHeader: true ),
1039
1039
TableRowNode (cells: [
1040
- TableCellNode (nodes: [TextNode ('text' )], links: []),
1041
- TableCellNode (nodes: [], links: []),
1040
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1041
+ TableCellNode (nodes: [], links: [], textAlignment : TableColumnTextAlignment .defaults ),
1042
1042
], isHeader: false ),
1043
1043
])
1044
1044
]);
1045
+
1046
+ static const tableWithDifferentTextAlignmentInColumns = ContentExample (
1047
+ 'table with different text aligment in columns' ,
1048
+ // https://chat.zulip.org/#narrow/channel/7-test-here/topic/Rajesh/near/1971201
1049
+ '| 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 |' ,
1050
+ '<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 '
1051
+ '<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 '
1052
+ '<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 '
1053
+ '</tbody>\n </table>' , [
1054
+ TableNode (rows: [
1055
+ TableRowNode (cells: [
1056
+ TableCellNode (nodes: [TextNode ('default-aligned' )], links: [], textAlignment: TableColumnTextAlignment .defaults),
1057
+ TableCellNode (nodes: [TextNode ('left-aligned' )], links: [], textAlignment: TableColumnTextAlignment .left),
1058
+ TableCellNode (nodes: [TextNode ('center-aligned' )], links: [], textAlignment: TableColumnTextAlignment .center),
1059
+ TableCellNode (nodes: [TextNode ('right-aligned' )], links: [], textAlignment: TableColumnTextAlignment .right),
1060
+ ], isHeader: true ),
1061
+ TableRowNode (cells: [
1062
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment: TableColumnTextAlignment .defaults),
1063
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment: TableColumnTextAlignment .left),
1064
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment: TableColumnTextAlignment .center),
1065
+ TableCellNode (nodes: [TextNode ('text' )], links: [], textAlignment: TableColumnTextAlignment .right),
1066
+ ], isHeader: false ),
1067
+ TableRowNode (cells: [
1068
+ TableCellNode (nodes: [TextNode ('long text long text long text' )], links: [], textAlignment: TableColumnTextAlignment .defaults),
1069
+ TableCellNode (nodes: [TextNode ('long text long text long text' )], links: [], textAlignment: TableColumnTextAlignment .left),
1070
+ TableCellNode (nodes: [TextNode ('long text long text long text' )], links: [], textAlignment: TableColumnTextAlignment .center),
1071
+ TableCellNode (nodes: [TextNode ('long text long text long text' )], links: [], textAlignment: TableColumnTextAlignment .right),
1072
+ ], isHeader: false ),
1073
+ ]),
1074
+ ]);
1045
1075
}
1046
1076
1047
1077
UnimplementedBlockContentNode blockUnimplemented (String html) {
@@ -1378,6 +1408,7 @@ void main() {
1378
1408
testParseExample (ContentExample .tableWithImagesInCells);
1379
1409
testParseExample (ContentExample .tableWithoutAnyBodyCellsInMarkdown);
1380
1410
testParseExample (ContentExample .tableMissingOneBodyColumnInMarkdown);
1411
+ testParseExample (ContentExample .tableWithDifferentTextAlignmentInColumns);
1381
1412
1382
1413
testParse ('parse nested lists, quotes, headings, code blocks' ,
1383
1414
// "1. > ###### two\n > * three\n\n four"
0 commit comments