@@ -508,6 +508,33 @@ void main() {
508
508
]),
509
509
]);
510
510
511
+ testParse ('content after image cluster' ,
512
+ '<p>content '
513
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png">icon.png</a> '
514
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2">icon.png</a></p>\n '
515
+ '<div class="message_inline_image">'
516
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png" title="icon.png">'
517
+ '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png"></a></div>'
518
+ '<div class="message_inline_image">'
519
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2" title="icon.png">'
520
+ '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2"></a></div>'
521
+ '<p>more content</p>' ,
522
+ const [
523
+ ParagraphNode (links: null , nodes: [
524
+ TextNode ('content ' ),
525
+ LinkNode (url: 'https://chat.zulip.org/user_avatars/2/realm/icon.png' , nodes: [TextNode ('icon.png' )]),
526
+ TextNode (' ' ),
527
+ LinkNode (url: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2' , nodes: [TextNode ('icon.png' )]),
528
+ ]),
529
+ ImageNodeList ([
530
+ ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png' ),
531
+ ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2' ),
532
+ ]),
533
+ ParagraphNode (links: null , nodes: [
534
+ TextNode ('more content' ),
535
+ ]),
536
+ ]);
537
+
511
538
testParse ('multiple clusters of images' ,
512
539
// "https://en.wikipedia.org/static/images/icons/wikipedia.png\nhttps://en.wikipedia.org/static/images/icons/wikipedia.png?v=1\n\nTest\n\nhttps://en.wikipedia.org/static/images/icons/wikipedia.png?v=2\nhttps://en.wikipedia.org/static/images/icons/wikipedia.png?v=3"
513
540
'<p>'
@@ -554,6 +581,71 @@ void main() {
554
581
ImageNode (srcUrl: 'https://uploads.zulipusercontent.net/51b70540cf6a5b3c8a0b919c893b8abddd447e88/68747470733a2f2f656e2e77696b6970656469612e6f72672f7374617469632f696d616765732f69636f6e732f77696b6970656469612e706e673f763d33' ),
555
582
]),
556
583
]);
584
+
585
+ // TODO: maybe delete this
586
+ testParse ('image as immediate child in implicit paragraph' ,
587
+ // "* https://chat.zulip.org/user_avatars/2/realm/icon.png"
588
+ '<ul>\n '
589
+ '<li>'
590
+ '<div class="message_inline_image">'
591
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png">'
592
+ '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png"></a></div></li>\n </ul>' ,
593
+ const [
594
+ ListNode (ListStyle .unordered, [[
595
+ ImageNodeList ([
596
+ ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png' ),
597
+ ]),
598
+ ]]),
599
+ ]);
600
+
601
+ testParse ('image cluster in implicit paragraph' ,
602
+ // "* [icon.png](https://chat.zulip.org/user_avatars/2/realm/icon.png) [icon.png](https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2)"
603
+ '<ul>\n '
604
+ '<li>'
605
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png">icon.png</a> '
606
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2">icon.png</a>'
607
+ '<div class="message_inline_image">'
608
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png" title="icon.png">'
609
+ '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png"></a></div>'
610
+ '<div class="message_inline_image">'
611
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2" title="icon.png">'
612
+ '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2"></a></div></li>\n </ul>' ,
613
+ const [
614
+ ListNode (ListStyle .unordered, [[
615
+ ParagraphNode (wasImplicit: true , links: null , nodes: [
616
+ LinkNode (url: 'https://chat.zulip.org/user_avatars/2/realm/icon.png' , nodes: [TextNode ('icon.png' )]),
617
+ TextNode (' ' ),
618
+ LinkNode (url: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2' , nodes: [TextNode ('icon.png' )]),
619
+ ]),
620
+ ImageNodeList ([
621
+ ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png' ),
622
+ ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2' ),
623
+ ]),
624
+ ]]),
625
+ ]);
626
+
627
+ testParse ('impossible content after image cluster in implicit paragraph' ,
628
+ '<ul>\n '
629
+ '<li>'
630
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png">icon.png</a> '
631
+ '<div class="message_inline_image">'
632
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png" title="icon.png">'
633
+ '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png"></a></div>'
634
+ '<span>Some content</span></li>\n </ul>' ,
635
+ [
636
+ ListNode (ListStyle .unordered, [[
637
+ const ParagraphNode (wasImplicit: true , links: null , nodes: [
638
+ LinkNode (url: 'https://chat.zulip.org/user_avatars/2/realm/icon.png' , nodes: [TextNode ('icon.png' )]),
639
+ TextNode (' ' ),
640
+ ]),
641
+ const ImageNodeList ([
642
+ ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png' ),
643
+ ]),
644
+ ParagraphNode (wasImplicit: true , links: null , nodes: [
645
+ inlineUnimplemented ('<span>Some content</span>' ),
646
+ ])
647
+ ]]),
648
+ ]);
557
649
});
558
650
559
651
testParse ('parse nested lists, quotes, headings, code blocks' ,
0 commit comments