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