@@ -382,86 +382,105 @@ class ContentExample {
382
382
QuotationNode ([ParagraphNode (links: null , nodes: [TextNode ('words' )])])
383
383
]);
384
384
385
- static const codeBlockPlain = ContentExample (
385
+ static final codeBlockPlain = ContentExample (
386
386
'code block without syntax highlighting' ,
387
387
"```\n verb\n atim\n ```" ,
388
388
expectedText: 'verb\n atim' ,
389
- '<div class="codehilite"><pre><span></span><code>verb\n atim\n </code></pre></div>' , [
389
+ '<div class="codehilite">'
390
+ '<pre><span></span>'
391
+ '<code>verb\n atim\n </code></pre></div>' , [
390
392
CodeBlockNode ([
391
- CodeBlockSpanNode (text: 'verb\n atim' , type : CodeBlockSpanType .text),
393
+ CodeBlockSpanNode (text: 'verb\n atim' , spanTypes : [ CodeBlockSpanType .text] ),
392
394
]),
393
395
]);
394
396
395
- static const codeBlockHighlightedShort = ContentExample (
397
+ static final codeBlockHighlightedShort = ContentExample (
396
398
'code block with syntax highlighting' ,
397
399
"```dart\n class A {}\n ```" ,
398
400
expectedText: 'class A {}' ,
399
- '<div class="codehilite" data-code-language="Dart"><pre>'
400
- '<span></span><code><span class="kd">class</span><span class="w"> </span>'
401
- '<span class="nc">A</span><span class="w"> </span><span class="p">{}</span>'
402
- '\n </code></pre></div>' , [
401
+ '<div class="codehilite" data-code-language="Dart">'
402
+ '<pre><span></span>'
403
+ '<code>'
404
+ '<span class="kd">class</span>'
405
+ '<span class="w"> </span>'
406
+ '<span class="nc">A</span>'
407
+ '<span class="w"> </span>'
408
+ '<span class="p">{}</span>\n </code></pre></div>' , [
403
409
CodeBlockNode ([
404
- CodeBlockSpanNode (text: 'class' , type : CodeBlockSpanType .keywordDeclaration),
405
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
406
- CodeBlockSpanNode (text: 'A' , type : CodeBlockSpanType .nameClass),
407
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
408
- CodeBlockSpanNode (text: '{}' , type : CodeBlockSpanType .punctuation),
410
+ CodeBlockSpanNode (text: 'class' , spanTypes : [ CodeBlockSpanType .keywordDeclaration] ),
411
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
412
+ CodeBlockSpanNode (text: 'A' , spanTypes : [ CodeBlockSpanType .nameClass] ),
413
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
414
+ CodeBlockSpanNode (text: '{}' , spanTypes : [ CodeBlockSpanType .punctuation] ),
409
415
]),
410
416
]);
411
417
412
- static const codeBlockHighlightedMultiline = ContentExample (
418
+ static final codeBlockHighlightedMultiline = ContentExample (
413
419
'code block, multiline, with syntax highlighting' ,
414
420
'```rust\n fn main() {\n print!("Hello ");\n\n print!("world!\\ n");\n }\n ```' ,
415
421
expectedText: 'fn main() {\n print!("Hello ");\n\n print!("world!\\ n");\n }' ,
416
- '<div class="codehilite" data-code-language="Rust"><pre>'
417
- '<span></span><code><span class="k">fn</span> <span class="nf">main</span>'
418
- '<span class="p">()</span><span class="w"> </span><span class="p">{</span>\n '
419
- '<span class="w"> </span><span class="fm">print!</span><span class="p">(</span>'
420
- '<span class="s">"Hello "</span><span class="p">);</span>\n\n '
421
- '<span class="w"> </span><span class="fm">print!</span><span class="p">(</span>'
422
- '<span class="s">"world!</span><span class="se">\\ n</span><span class="s">"</span>'
423
- '<span class="p">);</span>\n <span class="p">}</span>\n '
424
- '</code></pre></div>' , [
422
+ '<div class="codehilite" data-code-language="Rust">'
423
+ '<pre><span></span>'
424
+ '<code>'
425
+ '<span class="k">fn</span> '
426
+ '<span class="nf">main</span>'
427
+ '<span class="p">()</span>'
428
+ '<span class="w"> </span>'
429
+ '<span class="p">{</span>\n '
430
+ '<span class="w"> </span>'
431
+ '<span class="fm">print!</span>'
432
+ '<span class="p">(</span>'
433
+ '<span class="s">"Hello "</span>'
434
+ '<span class="p">);</span>\n\n '
435
+ '<span class="w"> </span>'
436
+ '<span class="fm">print!</span>'
437
+ '<span class="p">(</span>'
438
+ '<span class="s">"world!</span>'
439
+ '<span class="se">\\ n</span>'
440
+ '<span class="s">"</span>'
441
+ '<span class="p">);</span>\n '
442
+ '<span class="p">}</span>\n </code></pre></div>' , [
425
443
CodeBlockNode ([
426
- CodeBlockSpanNode (text: 'fn' , type : CodeBlockSpanType .keyword),
427
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .text),
428
- CodeBlockSpanNode (text: 'main' , type : CodeBlockSpanType .nameFunction),
429
- CodeBlockSpanNode (text: '()' , type : CodeBlockSpanType .punctuation),
430
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
431
- CodeBlockSpanNode (text: '{' , type : CodeBlockSpanType .punctuation),
432
- CodeBlockSpanNode (text: '\n ' , type : CodeBlockSpanType .text),
433
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
434
- CodeBlockSpanNode (text: 'print!' , type : CodeBlockSpanType .nameFunctionMagic),
435
- CodeBlockSpanNode (text: '(' , type : CodeBlockSpanType .punctuation),
436
- CodeBlockSpanNode (text: '"Hello "' , type : CodeBlockSpanType .string),
437
- CodeBlockSpanNode (text: ');' , type : CodeBlockSpanType .punctuation),
438
- CodeBlockSpanNode (text: '\n\n ' , type : CodeBlockSpanType .text),
439
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
440
- CodeBlockSpanNode (text: 'print!' , type : CodeBlockSpanType .nameFunctionMagic),
441
- CodeBlockSpanNode (text: '(' , type : CodeBlockSpanType .punctuation),
442
- CodeBlockSpanNode (text: '"world!' , type : CodeBlockSpanType .string),
443
- CodeBlockSpanNode (text: '\\ n' , type : CodeBlockSpanType .stringEscape),
444
- CodeBlockSpanNode (text: '"' , type : CodeBlockSpanType .string),
445
- CodeBlockSpanNode (text: ');' , type : CodeBlockSpanType .punctuation),
446
- CodeBlockSpanNode (text: '\n ' , type : CodeBlockSpanType .text),
447
- CodeBlockSpanNode (text: '}' , type : CodeBlockSpanType .punctuation),
444
+ CodeBlockSpanNode (text: 'fn' , spanTypes : [ CodeBlockSpanType .keyword] ),
445
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .text] ),
446
+ CodeBlockSpanNode (text: 'main' , spanTypes : [ CodeBlockSpanType .nameFunction] ),
447
+ CodeBlockSpanNode (text: '()' , spanTypes : [ CodeBlockSpanType .punctuation] ),
448
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
449
+ CodeBlockSpanNode (text: '{' , spanTypes : [ CodeBlockSpanType .punctuation] ),
450
+ CodeBlockSpanNode (text: '\n ' , spanTypes : [ CodeBlockSpanType .text] ),
451
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
452
+ CodeBlockSpanNode (text: 'print!' , spanTypes : [ CodeBlockSpanType .nameFunctionMagic] ),
453
+ CodeBlockSpanNode (text: '(' , spanTypes : [ CodeBlockSpanType .punctuation] ),
454
+ CodeBlockSpanNode (text: '"Hello "' , spanTypes : [ CodeBlockSpanType .string] ),
455
+ CodeBlockSpanNode (text: ');' , spanTypes : [ CodeBlockSpanType .punctuation] ),
456
+ CodeBlockSpanNode (text: '\n\n ' , spanTypes : [ CodeBlockSpanType .text] ),
457
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
458
+ CodeBlockSpanNode (text: 'print!' , spanTypes : [ CodeBlockSpanType .nameFunctionMagic] ),
459
+ CodeBlockSpanNode (text: '(' , spanTypes : [ CodeBlockSpanType .punctuation] ),
460
+ CodeBlockSpanNode (text: '"world!' , spanTypes : [ CodeBlockSpanType .string] ),
461
+ CodeBlockSpanNode (text: '\\ n' , spanTypes : [ CodeBlockSpanType .stringEscape] ),
462
+ CodeBlockSpanNode (text: '"' , spanTypes : [ CodeBlockSpanType .string] ),
463
+ CodeBlockSpanNode (text: ');' , spanTypes : [ CodeBlockSpanType .punctuation] ),
464
+ CodeBlockSpanNode (text: '\n ' , spanTypes : [ CodeBlockSpanType .text] ),
465
+ CodeBlockSpanNode (text: '}' , spanTypes : [ CodeBlockSpanType .punctuation] ),
448
466
]),
449
467
]);
450
468
451
- static const codeBlockSpansWithMultipleClasses = ContentExample (
469
+ static final codeBlockSpansWithMultipleClasses = ContentExample (
452
470
'code block spans with multiple CSS classes' ,
453
471
'```yaml\n - item\n ```' ,
454
472
expectedText: '- item' ,
455
473
// https://chat.zulip.org/#narrow/channel/7-test-here/topic/Greg/near/1949014
456
474
'<div class="codehilite" data-code-language="YAML">'
457
- '<pre><span></span><code><span class="p p-Indicator">-</span>'
458
- '<span class="w"> </span>'
459
- '<span class="l l-Scalar l-Scalar-Plain">item</span>\n '
460
- '</code></pre></div>' , [
475
+ '<pre><span></span>'
476
+ '<code>'
477
+ '<span class="p p-Indicator">-</span>'
478
+ '<span class="w"> </span>'
479
+ '<span class="l l-Scalar l-Scalar-Plain">item</span>\n </code></pre></div>' , [
461
480
CodeBlockNode ([
462
- CodeBlockSpanNode (text: "-" , type : CodeBlockSpanType .punctuation),
463
- CodeBlockSpanNode (text: " " , type : CodeBlockSpanType .whitespace),
464
- CodeBlockSpanNode (text: "item" , type : CodeBlockSpanType .literal)
481
+ CodeBlockSpanNode (text: "-" , spanTypes : [ CodeBlockSpanType .punctuation] ),
482
+ CodeBlockSpanNode (text: " " , spanTypes : [ CodeBlockSpanType .whitespace] ),
483
+ CodeBlockSpanNode (text: "item" , spanTypes : [ CodeBlockSpanType .literal] )
465
484
]),
466
485
]);
467
486
@@ -505,14 +524,15 @@ class ContentExample {
505
524
'\n </code></pre></div>' ),
506
525
]);
507
526
508
- static const codeBlockFollowedByMultipleLineBreaks = ContentExample (
527
+ static final codeBlockFollowedByMultipleLineBreaks = ContentExample (
509
528
'blank text nodes after code blocks' ,
510
529
' code block.\n\n some content' ,
511
530
// https://chat.zulip.org/#narrow/stream/7-test-here/near/1774823
512
531
'<div class="codehilite">'
513
- '<pre><span></span><code>code block.\n </code></pre></div>\n\n '
532
+ '<pre><span></span>'
533
+ '<code>code block.\n </code></pre></div>\n\n '
514
534
'<p>some content</p>' , [
515
- CodeBlockNode ([CodeBlockSpanNode (text: "code block." , type : CodeBlockSpanType .text)]),
535
+ CodeBlockNode ([CodeBlockSpanNode (text: "code block." , spanTypes : [ CodeBlockSpanType .text] )]),
516
536
ParagraphNode (links: null , nodes: [TextNode ("some content" )]),
517
537
]);
518
538
@@ -2040,7 +2060,7 @@ void main() async {
2040
2060
// "1. > ###### two\n > * three\n\n four"
2041
2061
'<ol>\n <li>\n <blockquote>\n <h6>two</h6>\n <ul>\n <li>three</li>\n '
2042
2062
'</ul>\n </blockquote>\n <div class="codehilite"><pre><span></span>'
2043
- '<code>four\n </code></pre></div>\n\n </li>\n </ol>' , const [
2063
+ '<code>four\n </code></pre></div>\n\n </li>\n </ol>' , [
2044
2064
OrderedListNode (start: 1 , [[
2045
2065
QuotationNode ([
2046
2066
HeadingNode (level: HeadingLevel .h6, links: null , nodes: [TextNode ('two' )]),
@@ -2049,7 +2069,7 @@ void main() async {
2049
2069
]]),
2050
2070
]),
2051
2071
CodeBlockNode ([
2052
- CodeBlockSpanNode (text: 'four' , type : CodeBlockSpanType .text),
2072
+ CodeBlockSpanNode (text: 'four' , spanTypes : [ CodeBlockSpanType .text] ),
2053
2073
]),
2054
2074
ParagraphNode (wasImplicit: true , links: null , nodes: [TextNode ('\n\n ' )]), // TODO avoid this; it renders wrong
2055
2075
]]),
0 commit comments