@@ -901,16 +901,16 @@ class ContentExample {
901901 '<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>' , [
902902 TableNode (rows: [
903903 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 ),
908908 ], isHeader: true ),
909909 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 ),
914914 ], isHeader: false ),
915915 ]),
916916 ]);
@@ -925,24 +925,24 @@ class ContentExample {
925925 '<tr>\n <td>body31</td>\n <td>body32</td>\n <td>body33</td>\n </tr>\n </tbody>\n </table>' , [
926926 TableNode (rows: [
927927 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 ),
931931 ], isHeader: true ),
932932 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 ),
936936 ], isHeader: false ),
937937 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 ),
941941 ], isHeader: false ),
942942 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 ),
946946 ], isHeader: false ),
947947 ]),
948948 ]);
@@ -955,16 +955,16 @@ class ContentExample {
955955 '<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>' , [
956956 TableNode (rows: [
957957 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 ),
962962 ], isHeader: true ),
963963 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 ),
968968 ], isHeader: false ),
969969 ]),
970970 ]);
@@ -977,10 +977,10 @@ class ContentExample {
977977 '<tbody>\n <tr>\n <td><a href="https://zulip.com">https://zulip.com</a></td>\n </tr>\n </tbody>\n </table>' , [
978978 TableNode (rows: [
979979 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 ),
981981 ], isHeader: true ),
982982 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 ),
984984 ], isHeader: false ),
985985 ]),
986986 ]);
@@ -994,10 +994,10 @@ class ContentExample {
994994 '<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>' , [
995995 TableNode (rows: [
996996 TableRowNode (cells: [
997- TableCellNode (nodes: [TextNode ('a' )], links: []),
997+ TableCellNode (nodes: [TextNode ('a' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
998998 ], isHeader: true ),
999999 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 ),
10011001 ], isHeader: false ),
10021002 ]),
10031003 ImageNodeList ([
@@ -1021,10 +1021,10 @@ class ContentExample {
10211021 '<tbody>\n <tr>\n <td></td>\n </tr>\n </tbody>\n </table>' , [
10221022 TableNode (rows: [
10231023 TableRowNode (cells: [
1024- TableCellNode (nodes: [TextNode ('table' )], links: []),
1024+ TableCellNode (nodes: [TextNode ('table' )], links: [], textAlignment : TableColumnTextAlignment .defaults ),
10251025 ], isHeader: true ),
10261026 TableRowNode (cells: [
1027- TableCellNode (nodes: [], links: []),
1027+ TableCellNode (nodes: [], links: [], textAlignment : TableColumnTextAlignment .defaults ),
10281028 ], isHeader: false ),
10291029 ]),
10301030 ]);
@@ -1037,12 +1037,58 @@ class ContentExample {
10371037 '<tbody>\n <tr>\n <td>text</td>\n <td></td>\n </tr>\n </tbody>\n </table>' , [
10381038 TableNode (rows: [
10391039 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 ),
10421042 ], isHeader: true ),
10431043 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),
10461092 ], isHeader: false ),
10471093 ]),
10481094 ]);
@@ -1382,6 +1428,8 @@ void main() {
13821428 testParseExample (ContentExample .tableWithImage);
13831429 testParseExample (ContentExample .tableWithoutAnyBodyCellsInMarkdown);
13841430 testParseExample (ContentExample .tableMissingOneBodyColumnInMarkdown);
1431+ testParseExample (ContentExample .tableWithDifferentTextAlignmentInColumns);
1432+ testParseExample (ContentExample .tableWithLinkCenterAligned);
13851433
13861434 testParse ('parse nested lists, quotes, headings, code blocks' ,
13871435 // "1. > ###### two\n > * three\n\n four"
0 commit comments