@@ -375,86 +375,105 @@ class ContentExample {
375
375
QuotationNode ([ParagraphNode (links: null , nodes: [TextNode ('words' )])])
376
376
]);
377
377
378
- static const codeBlockPlain = ContentExample (
378
+ static final codeBlockPlain = ContentExample (
379
379
'code block without syntax highlighting' ,
380
380
"```\n verb\n atim\n ```" ,
381
381
expectedText: 'verb\n atim' ,
382
- '<div class="codehilite"><pre><span></span><code>verb\n atim\n </code></pre></div>' , [
382
+ '<div class="codehilite">'
383
+ '<pre><span></span>'
384
+ '<code>verb\n atim\n </code></pre></div>' , [
383
385
CodeBlockNode ([
384
- CodeBlockSpanNode (text: 'verb\n atim' , type : CodeBlockSpanType .text),
386
+ CodeBlockSpanNode (text: 'verb\n atim' , spanTypes : [ CodeBlockSpanType .text] ),
385
387
]),
386
388
]);
387
389
388
- static const codeBlockHighlightedShort = ContentExample (
390
+ static final codeBlockHighlightedShort = ContentExample (
389
391
'code block with syntax highlighting' ,
390
392
"```dart\n class A {}\n ```" ,
391
393
expectedText: 'class A {}' ,
392
- '<div class="codehilite" data-code-language="Dart"><pre>'
393
- '<span></span><code><span class="kd">class</span><span class="w"> </span>'
394
- '<span class="nc">A</span><span class="w"> </span><span class="p">{}</span>'
395
- '\n </code></pre></div>' , [
394
+ '<div class="codehilite" data-code-language="Dart">'
395
+ '<pre><span></span>'
396
+ '<code>'
397
+ '<span class="kd">class</span>'
398
+ '<span class="w"> </span>'
399
+ '<span class="nc">A</span>'
400
+ '<span class="w"> </span>'
401
+ '<span class="p">{}</span>\n </code></pre></div>' , [
396
402
CodeBlockNode ([
397
- CodeBlockSpanNode (text: 'class' , type : CodeBlockSpanType .keywordDeclaration),
398
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
399
- CodeBlockSpanNode (text: 'A' , type : CodeBlockSpanType .nameClass),
400
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
401
- CodeBlockSpanNode (text: '{}' , type : CodeBlockSpanType .punctuation),
403
+ CodeBlockSpanNode (text: 'class' , spanTypes : [ CodeBlockSpanType .keywordDeclaration] ),
404
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
405
+ CodeBlockSpanNode (text: 'A' , spanTypes : [ CodeBlockSpanType .nameClass] ),
406
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
407
+ CodeBlockSpanNode (text: '{}' , spanTypes : [ CodeBlockSpanType .punctuation] ),
402
408
]),
403
409
]);
404
410
405
- static const codeBlockHighlightedMultiline = ContentExample (
411
+ static final codeBlockHighlightedMultiline = ContentExample (
406
412
'code block, multiline, with syntax highlighting' ,
407
413
'```rust\n fn main() {\n print!("Hello ");\n\n print!("world!\\ n");\n }\n ```' ,
408
414
expectedText: 'fn main() {\n print!("Hello ");\n\n print!("world!\\ n");\n }' ,
409
- '<div class="codehilite" data-code-language="Rust"><pre>'
410
- '<span></span><code><span class="k">fn</span> <span class="nf">main</span>'
411
- '<span class="p">()</span><span class="w"> </span><span class="p">{</span>\n '
412
- '<span class="w"> </span><span class="fm">print!</span><span class="p">(</span>'
413
- '<span class="s">"Hello "</span><span class="p">);</span>\n\n '
414
- '<span class="w"> </span><span class="fm">print!</span><span class="p">(</span>'
415
- '<span class="s">"world!</span><span class="se">\\ n</span><span class="s">"</span>'
416
- '<span class="p">);</span>\n <span class="p">}</span>\n '
417
- '</code></pre></div>' , [
415
+ '<div class="codehilite" data-code-language="Rust">'
416
+ '<pre><span></span>'
417
+ '<code>'
418
+ '<span class="k">fn</span> '
419
+ '<span class="nf">main</span>'
420
+ '<span class="p">()</span>'
421
+ '<span class="w"> </span>'
422
+ '<span class="p">{</span>\n '
423
+ '<span class="w"> </span>'
424
+ '<span class="fm">print!</span>'
425
+ '<span class="p">(</span>'
426
+ '<span class="s">"Hello "</span>'
427
+ '<span class="p">);</span>\n\n '
428
+ '<span class="w"> </span>'
429
+ '<span class="fm">print!</span>'
430
+ '<span class="p">(</span>'
431
+ '<span class="s">"world!</span>'
432
+ '<span class="se">\\ n</span>'
433
+ '<span class="s">"</span>'
434
+ '<span class="p">);</span>\n '
435
+ '<span class="p">}</span>\n </code></pre></div>' , [
418
436
CodeBlockNode ([
419
- CodeBlockSpanNode (text: 'fn' , type : CodeBlockSpanType .keyword),
420
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .text),
421
- CodeBlockSpanNode (text: 'main' , type : CodeBlockSpanType .nameFunction),
422
- CodeBlockSpanNode (text: '()' , type : CodeBlockSpanType .punctuation),
423
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
424
- CodeBlockSpanNode (text: '{' , type : CodeBlockSpanType .punctuation),
425
- CodeBlockSpanNode (text: '\n ' , type : CodeBlockSpanType .text),
426
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
427
- CodeBlockSpanNode (text: 'print!' , type : CodeBlockSpanType .nameFunctionMagic),
428
- CodeBlockSpanNode (text: '(' , type : CodeBlockSpanType .punctuation),
429
- CodeBlockSpanNode (text: '"Hello "' , type : CodeBlockSpanType .string),
430
- CodeBlockSpanNode (text: ');' , type : CodeBlockSpanType .punctuation),
431
- CodeBlockSpanNode (text: '\n\n ' , type : CodeBlockSpanType .text),
432
- CodeBlockSpanNode (text: ' ' , type : CodeBlockSpanType .whitespace),
433
- CodeBlockSpanNode (text: 'print!' , type : CodeBlockSpanType .nameFunctionMagic),
434
- CodeBlockSpanNode (text: '(' , type : CodeBlockSpanType .punctuation),
435
- CodeBlockSpanNode (text: '"world!' , type : CodeBlockSpanType .string),
436
- CodeBlockSpanNode (text: '\\ n' , type : CodeBlockSpanType .stringEscape),
437
- CodeBlockSpanNode (text: '"' , type : CodeBlockSpanType .string),
438
- CodeBlockSpanNode (text: ');' , type : CodeBlockSpanType .punctuation),
439
- CodeBlockSpanNode (text: '\n ' , type : CodeBlockSpanType .text),
440
- CodeBlockSpanNode (text: '}' , type : CodeBlockSpanType .punctuation),
437
+ CodeBlockSpanNode (text: 'fn' , spanTypes : [ CodeBlockSpanType .keyword] ),
438
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .text] ),
439
+ CodeBlockSpanNode (text: 'main' , spanTypes : [ CodeBlockSpanType .nameFunction] ),
440
+ CodeBlockSpanNode (text: '()' , spanTypes : [ CodeBlockSpanType .punctuation] ),
441
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
442
+ CodeBlockSpanNode (text: '{' , spanTypes : [ CodeBlockSpanType .punctuation] ),
443
+ CodeBlockSpanNode (text: '\n ' , spanTypes : [ CodeBlockSpanType .text] ),
444
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
445
+ CodeBlockSpanNode (text: 'print!' , spanTypes : [ CodeBlockSpanType .nameFunctionMagic] ),
446
+ CodeBlockSpanNode (text: '(' , spanTypes : [ CodeBlockSpanType .punctuation] ),
447
+ CodeBlockSpanNode (text: '"Hello "' , spanTypes : [ CodeBlockSpanType .string] ),
448
+ CodeBlockSpanNode (text: ');' , spanTypes : [ CodeBlockSpanType .punctuation] ),
449
+ CodeBlockSpanNode (text: '\n\n ' , spanTypes : [ CodeBlockSpanType .text] ),
450
+ CodeBlockSpanNode (text: ' ' , spanTypes : [ CodeBlockSpanType .whitespace] ),
451
+ CodeBlockSpanNode (text: 'print!' , spanTypes : [ CodeBlockSpanType .nameFunctionMagic] ),
452
+ CodeBlockSpanNode (text: '(' , spanTypes : [ CodeBlockSpanType .punctuation] ),
453
+ CodeBlockSpanNode (text: '"world!' , spanTypes : [ CodeBlockSpanType .string] ),
454
+ CodeBlockSpanNode (text: '\\ n' , spanTypes : [ CodeBlockSpanType .stringEscape] ),
455
+ CodeBlockSpanNode (text: '"' , spanTypes : [ CodeBlockSpanType .string] ),
456
+ CodeBlockSpanNode (text: ');' , spanTypes : [ CodeBlockSpanType .punctuation] ),
457
+ CodeBlockSpanNode (text: '\n ' , spanTypes : [ CodeBlockSpanType .text] ),
458
+ CodeBlockSpanNode (text: '}' , spanTypes : [ CodeBlockSpanType .punctuation] ),
441
459
]),
442
460
]);
443
461
444
- static const codeBlockSpansWithMultipleClasses = ContentExample (
462
+ static final codeBlockSpansWithMultipleClasses = ContentExample (
445
463
'code block spans with multiple CSS classes' ,
446
464
'```yaml\n - item\n ```' ,
447
465
expectedText: '- item' ,
448
466
// https://chat.zulip.org/#narrow/channel/7-test-here/topic/Greg/near/1949014
449
467
'<div class="codehilite" data-code-language="YAML">'
450
- '<pre><span></span><code><span class="p p-Indicator">-</span>'
451
- '<span class="w"> </span>'
452
- '<span class="l l-Scalar l-Scalar-Plain">item</span>\n '
453
- '</code></pre></div>' , [
468
+ '<pre><span></span>'
469
+ '<code>'
470
+ '<span class="p p-Indicator">-</span>'
471
+ '<span class="w"> </span>'
472
+ '<span class="l l-Scalar l-Scalar-Plain">item</span>\n </code></pre></div>' , [
454
473
CodeBlockNode ([
455
- CodeBlockSpanNode (text: "-" , type : CodeBlockSpanType .punctuation),
456
- CodeBlockSpanNode (text: " " , type : CodeBlockSpanType .whitespace),
457
- CodeBlockSpanNode (text: "item" , type : CodeBlockSpanType .literal)
474
+ CodeBlockSpanNode (text: "-" , spanTypes : [ CodeBlockSpanType .punctuation] ),
475
+ CodeBlockSpanNode (text: " " , spanTypes : [ CodeBlockSpanType .whitespace] ),
476
+ CodeBlockSpanNode (text: "item" , spanTypes : [ CodeBlockSpanType .literal] )
458
477
]),
459
478
]);
460
479
@@ -498,14 +517,15 @@ class ContentExample {
498
517
'\n </code></pre></div>' ),
499
518
]);
500
519
501
- static const codeBlockFollowedByMultipleLineBreaks = ContentExample (
520
+ static final codeBlockFollowedByMultipleLineBreaks = ContentExample (
502
521
'blank text nodes after code blocks' ,
503
522
' code block.\n\n some content' ,
504
523
// https://chat.zulip.org/#narrow/stream/7-test-here/near/1774823
505
524
'<div class="codehilite">'
506
- '<pre><span></span><code>code block.\n </code></pre></div>\n\n '
525
+ '<pre><span></span>'
526
+ '<code>code block.\n </code></pre></div>\n\n '
507
527
'<p>some content</p>' , [
508
- CodeBlockNode ([CodeBlockSpanNode (text: "code block." , type : CodeBlockSpanType .text)]),
528
+ CodeBlockNode ([CodeBlockSpanNode (text: "code block." , spanTypes : [ CodeBlockSpanType .text] )]),
509
529
ParagraphNode (links: null , nodes: [TextNode ("some content" )]),
510
530
]);
511
531
@@ -2079,7 +2099,7 @@ void main() async {
2079
2099
// "1. > ###### two\n > * three\n\n four"
2080
2100
'<ol>\n <li>\n <blockquote>\n <h6>two</h6>\n <ul>\n <li>three</li>\n '
2081
2101
'</ul>\n </blockquote>\n <div class="codehilite"><pre><span></span>'
2082
- '<code>four\n </code></pre></div>\n\n </li>\n </ol>' , const [
2102
+ '<code>four\n </code></pre></div>\n\n </li>\n </ol>' , [
2083
2103
OrderedListNode (start: 1 , [[
2084
2104
QuotationNode ([
2085
2105
HeadingNode (level: HeadingLevel .h6, links: null , nodes: [TextNode ('two' )]),
@@ -2088,7 +2108,7 @@ void main() async {
2088
2108
]]),
2089
2109
]),
2090
2110
CodeBlockNode ([
2091
- CodeBlockSpanNode (text: 'four' , type : CodeBlockSpanType .text),
2111
+ CodeBlockSpanNode (text: 'four' , spanTypes : [ CodeBlockSpanType .text] ),
2092
2112
]),
2093
2113
ParagraphNode (wasImplicit: true , links: null , nodes: [TextNode ('\n\n ' )]), // TODO avoid this; it renders wrong
2094
2114
]]),
0 commit comments