@@ -256,6 +256,115 @@ class ContentExample {
256
256
'<span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal">λ</span></span></span></span></span>'
257
257
'<br>\n </p>\n </blockquote>' ,
258
258
[QuotationNode ([MathBlockNode (texSource: r'\lambda' )])]);
259
+
260
+ static const imageSingle = ContentExample (
261
+ 'single image' ,
262
+ "https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3" ,
263
+ '<div class="message_inline_image">'
264
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3">'
265
+ '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3"></a></div>' , [
266
+ ImageNodeList ([
267
+ ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3' ),
268
+ ]),
269
+ ]);
270
+
271
+ static const imageCluster = ContentExample (
272
+ 'multiple images' ,
273
+ "https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3\n https://chat.zulip.org/user_avatars/2/realm/icon.png?version=4" ,
274
+ '<p>'
275
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3">https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3</a><br>\n '
276
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=4">https://chat.zulip.org/user_avatars/2/realm/icon.png?version=4</a></p>\n '
277
+ '<div class="message_inline_image">'
278
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3">'
279
+ '<img src="https://uploads.zulipusercontent.net/f535ba07f95b99a83aa48e44fd62bbb6c6cf6615/68747470733a2f2f636861742e7a756c69702e6f72672f757365725f617661746172732f322f7265616c6d2f69636f6e2e706e673f76657273696f6e3d33"></a></div>'
280
+ '<div class="message_inline_image">'
281
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=4">'
282
+ '<img src="https://uploads.zulipusercontent.net/8f63bc2632a0e41be3f457d86c077e61b4a03e7e/68747470733a2f2f636861742e7a756c69702e6f72672f757365725f617661746172732f322f7265616c6d2f69636f6e2e706e673f76657273696f6e3d34"></a></div>' , [
283
+ ParagraphNode (links: null , nodes: [
284
+ LinkNode (url: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3' , nodes: [TextNode ('https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3' )]),
285
+ LineBreakInlineNode (),
286
+ TextNode ('\n ' ),
287
+ LinkNode (url: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=4' , nodes: [TextNode ('https://chat.zulip.org/user_avatars/2/realm/icon.png?version=4' )]),
288
+ ]),
289
+ ImageNodeList ([
290
+ ImageNode (srcUrl: 'https://uploads.zulipusercontent.net/f535ba07f95b99a83aa48e44fd62bbb6c6cf6615/68747470733a2f2f636861742e7a756c69702e6f72672f757365725f617661746172732f322f7265616c6d2f69636f6e2e706e673f76657273696f6e3d33' ),
291
+ ImageNode (srcUrl: 'https://uploads.zulipusercontent.net/8f63bc2632a0e41be3f457d86c077e61b4a03e7e/68747470733a2f2f636861742e7a756c69702e6f72672f757365725f617661746172732f322f7265616c6d2f69636f6e2e706e673f76657273696f6e3d34' ),
292
+ ]),
293
+ ]);
294
+
295
+ static const imageClusterThenContent = ContentExample (
296
+ 'content after image cluster' ,
297
+ "https://chat.zulip.org/user_avatars/2/realm/icon.png\n https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2\n\n more content" ,
298
+ '<p>content '
299
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png">icon.png</a> '
300
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2">icon.png</a></p>\n '
301
+ '<div class="message_inline_image">'
302
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png" title="icon.png">'
303
+ '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png"></a></div>'
304
+ '<div class="message_inline_image">'
305
+ '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2" title="icon.png">'
306
+ '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2"></a></div>'
307
+ '<p>more content</p>' , [
308
+ ParagraphNode (links: null , nodes: [
309
+ TextNode ('content ' ),
310
+ LinkNode (url: 'https://chat.zulip.org/user_avatars/2/realm/icon.png' , nodes: [TextNode ('icon.png' )]),
311
+ TextNode (' ' ),
312
+ LinkNode (url: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2' , nodes: [TextNode ('icon.png' )]),
313
+ ]),
314
+ ImageNodeList ([
315
+ ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png' ),
316
+ ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=2' ),
317
+ ]),
318
+ ParagraphNode (links: null , nodes: [
319
+ TextNode ('more content' ),
320
+ ]),
321
+ ]);
322
+
323
+ static const imageMultipleClusters = ContentExample (
324
+ 'multiple clusters of images' ,
325
+ "https://en.wikipedia.org/static/images/icons/wikipedia.png\n https://en.wikipedia.org/static/images/icons/wikipedia.png?v=1\n\n Test\n\n https://en.wikipedia.org/static/images/icons/wikipedia.png?v=2\n https://en.wikipedia.org/static/images/icons/wikipedia.png?v=3" ,
326
+ '<p>'
327
+ '<a href="https://en.wikipedia.org/static/images/icons/wikipedia.png">https://en.wikipedia.org/static/images/icons/wikipedia.png</a><br>\n ' '<a href="https://en.wikipedia.org/static/images/icons/wikipedia.png?v=1">https://en.wikipedia.org/static/images/icons/wikipedia.png?v=1</a></p>\n '
328
+ '<div class="message_inline_image">'
329
+ '<a href="https://en.wikipedia.org/static/images/icons/wikipedia.png">'
330
+ '<img src="https://uploads.zulipusercontent.net/34b2695ca83af76204b0b25a8f2019ee35ec38fa/68747470733a2f2f656e2e77696b6970656469612e6f72672f7374617469632f696d616765732f69636f6e732f77696b6970656469612e706e67"></a></div>'
331
+ '<div class="message_inline_image">'
332
+ '<a href="https://en.wikipedia.org/static/images/icons/wikipedia.png?v=1">'
333
+ '<img src="https://uploads.zulipusercontent.net/d200fb112aaccbff9df767373a201fa59601f362/68747470733a2f2f656e2e77696b6970656469612e6f72672f7374617469632f696d616765732f69636f6e732f77696b6970656469612e706e673f763d31"></a></div>'
334
+ '<p>Test</p>\n '
335
+ '<p>'
336
+ '<a href="https://en.wikipedia.org/static/images/icons/wikipedia.png?v=2">https://en.wikipedia.org/static/images/icons/wikipedia.png?v=2</a><br>\n '
337
+ '<a href="https://en.wikipedia.org/static/images/icons/wikipedia.png?v=3">https://en.wikipedia.org/static/images/icons/wikipedia.png?v=3</a></p>\n '
338
+ '<div class="message_inline_image">'
339
+ '<a href="https://en.wikipedia.org/static/images/icons/wikipedia.png?v=2">'
340
+ '<img src="https://uploads.zulipusercontent.net/c4db87e81348dac94eacaa966b46d968b34029cc/68747470733a2f2f656e2e77696b6970656469612e6f72672f7374617469632f696d616765732f69636f6e732f77696b6970656469612e706e673f763d32"></a></div>'
341
+ '<div class="message_inline_image">'
342
+ '<a href="https://en.wikipedia.org/static/images/icons/wikipedia.png?v=3">'
343
+ '<img src="https://uploads.zulipusercontent.net/51b70540cf6a5b3c8a0b919c893b8abddd447e88/68747470733a2f2f656e2e77696b6970656469612e6f72672f7374617469632f696d616765732f69636f6e732f77696b6970656469612e706e673f763d33"></a></div>' , [
344
+ ParagraphNode (links: null , nodes: [
345
+ LinkNode (url: 'https://en.wikipedia.org/static/images/icons/wikipedia.png' , nodes: [TextNode ('https://en.wikipedia.org/static/images/icons/wikipedia.png' )]),
346
+ LineBreakInlineNode (),
347
+ TextNode ('\n ' ),
348
+ LinkNode (url: 'https://en.wikipedia.org/static/images/icons/wikipedia.png?v=1' , nodes: [TextNode ('https://en.wikipedia.org/static/images/icons/wikipedia.png?v=1' )]),
349
+ ]),
350
+ ImageNodeList ([
351
+ ImageNode (srcUrl: 'https://uploads.zulipusercontent.net/34b2695ca83af76204b0b25a8f2019ee35ec38fa/68747470733a2f2f656e2e77696b6970656469612e6f72672f7374617469632f696d616765732f69636f6e732f77696b6970656469612e706e67' ),
352
+ ImageNode (srcUrl: 'https://uploads.zulipusercontent.net/d200fb112aaccbff9df767373a201fa59601f362/68747470733a2f2f656e2e77696b6970656469612e6f72672f7374617469632f696d616765732f69636f6e732f77696b6970656469612e706e673f763d31' ),
353
+ ]),
354
+ ParagraphNode (links: null , nodes: [
355
+ TextNode ('Test' ),
356
+ ]),
357
+ ParagraphNode (links: null , nodes: [
358
+ LinkNode (url: 'https://en.wikipedia.org/static/images/icons/wikipedia.png?v=2' , nodes: [TextNode ('https://en.wikipedia.org/static/images/icons/wikipedia.png?v=2' )]),
359
+ LineBreakInlineNode (),
360
+ TextNode ('\n ' ),
361
+ LinkNode (url: 'https://en.wikipedia.org/static/images/icons/wikipedia.png?v=3' , nodes: [TextNode ('https://en.wikipedia.org/static/images/icons/wikipedia.png?v=3' )]),
362
+ ]),
363
+ ImageNodeList ([
364
+ ImageNode (srcUrl: 'https://uploads.zulipusercontent.net/c4db87e81348dac94eacaa966b46d968b34029cc/68747470733a2f2f656e2e77696b6970656469612e6f72672f7374617469632f696d616765732f69636f6e732f77696b6970656469612e706e673f763d32' ),
365
+ ImageNode (srcUrl: 'https://uploads.zulipusercontent.net/51b70540cf6a5b3c8a0b919c893b8abddd447e88/68747470733a2f2f656e2e77696b6970656469612e6f72672f7374617469632f696d616765732f69636f6e732f77696b6970656469612e706e673f763d33' ),
366
+ ]),
367
+ ]);
259
368
}
260
369
261
370
UnimplementedBlockContentNode blockUnimplemented (String html) {
@@ -576,14 +685,10 @@ void main() {
576
685
testParseExample (ContentExample .mathBlock);
577
686
testParseExample (ContentExample .mathBlockInQuote);
578
687
579
- testParse ('parse image' ,
580
- // "https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3"
581
- '<div class="message_inline_image">'
582
- '<a href="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3">'
583
- '<img src="https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3">'
584
- '</a></div>' , const [
585
- ImageNode (srcUrl: 'https://chat.zulip.org/user_avatars/2/realm/icon.png?version=3' ),
586
- ]);
688
+ testParseExample (ContentExample .imageSingle);
689
+ testParseExample (ContentExample .imageCluster);
690
+ testParseExample (ContentExample .imageClusterThenContent);
691
+ testParseExample (ContentExample .imageMultipleClusters);
587
692
588
693
testParse ('parse nested lists, quotes, headings, code blocks' ,
589
694
// "1. > ###### two\n > * three\n\n four"
0 commit comments