xref: /dokuwiki/_test/tests/Parsing/Markdown/gfm-spec/skip.php (revision 72b2703b4f922ca520e7cb2e7765a252175f30d3)
1*72b2703bSAndreas Gohr<?php
2*72b2703bSAndreas Gohr
3*72b2703bSAndreas Gohr/**
4*72b2703bSAndreas Gohr * GFM spec examples that GfmSpecTest should skip, keyed by example number
5*72b2703bSAndreas Gohr * (as numbered in spec.txt / the rendered spec).
6*72b2703bSAndreas Gohr *
7*72b2703bSAndreas Gohr * Add entries here ONLY for behavior DokuWiki has explicitly decided not to
8*72b2703bSAndreas Gohr * implement — not for features that are merely pending. Unimplemented
9*72b2703bSAndreas Gohr * features should show as real failures so they remain visible TODOs on
10*72b2703bSAndreas Gohr * the branch.
11*72b2703bSAndreas Gohr *
12*72b2703bSAndreas Gohr * Each value is a short human-readable reason that will appear in phpunit's
13*72b2703bSAndreas Gohr * skip output.
14*72b2703bSAndreas Gohr */
15*72b2703bSAndreas Gohr
16*72b2703bSAndreas Gohrreturn [
17*72b2703bSAndreas Gohr    // --------------------------------------------------------------------
18*72b2703bSAndreas Gohr    // CommonMark §6.2 flanking-delimiter analysis — deliberately not
19*72b2703bSAndreas Gohr    // implemented. DokuWiki's regex lexer uses leftmost-match and cannot
20*72b2703bSAndreas Gohr    // apply CommonMark's left/right-flanking rules that distinguish
21*72b2703bSAndreas Gohr    // word-chars, whitespace, and punctuation for `*`/`_` delimiters, or
22*72b2703bSAndreas Gohr    // the "multiple-of-3" rule for overlapping runs. These examples all
23*72b2703bSAndreas Gohr    // rely on that machinery.
24*72b2703bSAndreas Gohr    // --------------------------------------------------------------------
25*72b2703bSAndreas Gohr
26*72b2703bSAndreas Gohr    // Unicode whitespace in flanking context. Our `\s` is ASCII-only
27*72b2703bSAndreas Gohr    // because the lexer doesn't set the PCRE `u` flag.
28*72b2703bSAndreas Gohr    363 => 'Unicode whitespace (U+00A0) flanking — requires u-flag-aware regex',
29*72b2703bSAndreas Gohr
30*72b2703bSAndreas Gohr    // Punctuation-adjacent flanking for `*` / `_` / `**` / `__`
31*72b2703bSAndreas Gohr    362 => 'flanking: punctuation-adjacent `*` (left-flanking vs. right-flanking)',
32*72b2703bSAndreas Gohr    368 => 'flanking: punctuation-adjacent `_`',
33*72b2703bSAndreas Gohr    372 => 'flanking: intraword `_` with punctuation inside',
34*72b2703bSAndreas Gohr    377 => 'flanking: `*` followed by `(` requires punctuation-aware flanking',
35*72b2703bSAndreas Gohr    378 => 'flanking: nested `*(*foo*)*` requires flanking + balanced-pair analysis',
36*72b2703bSAndreas Gohr    382 => 'flanking: nested `_(_foo_)_` requires flanking + balanced-pair analysis',
37*72b2703bSAndreas Gohr    389 => 'flanking: punctuation-adjacent `**`',
38*72b2703bSAndreas Gohr    394 => 'flanking: punctuation-adjacent `__`',
39*72b2703bSAndreas Gohr    401 => 'flanking: `**` followed by `(`',
40*72b2703bSAndreas Gohr    404 => 'flanking: nested `*bar*` inside `**foo ... foo**` with punctuation',
41*72b2703bSAndreas Gohr    407 => 'flanking: `__` followed by `(`',
42*72b2703bSAndreas Gohr    470 => 'flanking: nested `*_foo_*` requires balanced-pair analysis',
43*72b2703bSAndreas Gohr    472 => 'flanking: nested `_*foo*_` requires balanced-pair analysis',
44*72b2703bSAndreas Gohr
45*72b2703bSAndreas Gohr    // Intraword `__` strong (even multibyte) — flanking rule for `_` requires
46*72b2703bSAndreas Gohr    // examining whether the delimiter run is word-boundary-flanking, which our
47*72b2703bSAndreas Gohr    // simple lookbehind/lookahead approximation doesn't fully match.
48*72b2703bSAndreas Gohr    395 => 'flanking: intraword `__` (`foo__bar__`) — left-flanking vs right-flanking',
49*72b2703bSAndreas Gohr    396 => 'flanking: intraword `__` across digits (`5__6__78`)',
50*72b2703bSAndreas Gohr    397 => 'flanking: intraword `__` with Cyrillic',
51*72b2703bSAndreas Gohr    398 => 'flanking: `__foo, __bar__, baz__` — flanking + balanced pairing',
52*72b2703bSAndreas Gohr    409 => 'flanking: `__foo__bar` — intraword close',
53*72b2703bSAndreas Gohr    410 => 'flanking: intraword `__` with Cyrillic (leading)',
54*72b2703bSAndreas Gohr    411 => 'flanking: `__foo__bar__baz__` — multiple `__` pairs with flanking',
55*72b2703bSAndreas Gohr    412 => 'flanking: `__(bar)__.` — punctuation-adjacent',
56*72b2703bSAndreas Gohr
57*72b2703bSAndreas Gohr    // Overlapping / multiple-of-3 rule for runs
58*72b2703bSAndreas Gohr    416 => 'CommonMark rule 9 (overlapping same-delimiter `_foo _bar_ baz_`)',
59*72b2703bSAndreas Gohr    417 => 'CommonMark overlapping `_` / `__` with flanking',
60*72b2703bSAndreas Gohr    418 => 'CommonMark overlapping `*foo *bar**` — multiple-of-3 rule',
61*72b2703bSAndreas Gohr    419 => 'CommonMark nested `*foo **bar** baz*` — balanced-pair analysis',
62*72b2703bSAndreas Gohr    421 => 'CommonMark overlapping `*foo**bar*` — multiple-of-3',
63*72b2703bSAndreas Gohr    422 => 'CommonMark nested `***foo** bar*` — triple-delimiter analysis',
64*72b2703bSAndreas Gohr    423 => 'CommonMark nested `*foo **bar***` — triple-delimiter analysis',
65*72b2703bSAndreas Gohr    424 => 'CommonMark nested `*foo**bar***` — triple-delimiter analysis',
66*72b2703bSAndreas Gohr    425 => 'CommonMark triple `foo***bar***baz` — triple-delimiter analysis',
67*72b2703bSAndreas Gohr    426 => 'CommonMark long delimiter runs `foo******bar*********baz`',
68*72b2703bSAndreas Gohr    427 => 'CommonMark deeply nested `*foo **bar *baz* bim** bop*`',
69*72b2703bSAndreas Gohr    434 => 'CommonMark overlapping `__foo __bar__ baz__` — multiple-of-3',
70*72b2703bSAndreas Gohr    435 => 'CommonMark `____foo__ bar__` — leading long delimiter run',
71*72b2703bSAndreas Gohr    436 => 'CommonMark `**foo **bar****` — trailing long delimiter run',
72*72b2703bSAndreas Gohr    439 => 'CommonMark nested `***foo* bar**` — triple-delimiter',
73*72b2703bSAndreas Gohr    440 => 'CommonMark nested `**foo *bar***` — triple-delimiter',
74*72b2703bSAndreas Gohr    441 => 'CommonMark deeply nested `**foo *bar **baz** bim* bop**`',
75*72b2703bSAndreas Gohr
76*72b2703bSAndreas Gohr    // `__foo_` / `_foo__` — mixing `_` and `__` requires flanking to decide
77*72b2703bSAndreas Gohr    // which delimiter pairs open/close.
78*72b2703bSAndreas Gohr    463 => 'flanking: `__foo_` — mixed `_`/`__` pairing',
79*72b2703bSAndreas Gohr    464 => 'flanking: `_foo__` — mixed `_`/`__` pairing',
80*72b2703bSAndreas Gohr    465 => 'flanking: `___foo__` — delimiter-run length analysis',
81*72b2703bSAndreas Gohr    466 => 'flanking: `____foo_` — delimiter-run length analysis',
82*72b2703bSAndreas Gohr    467 => 'flanking: `__foo___` — delimiter-run length analysis',
83*72b2703bSAndreas Gohr    468 => 'flanking: `_foo____` — delimiter-run length analysis',
84*72b2703bSAndreas Gohr
85*72b2703bSAndreas Gohr    // Long delimiter runs require excess-drop logic (2 outer chars dropped
86*72b2703bSAndreas Gohr    // from each side). Stack-based pairing needed — out of scope.
87*72b2703bSAndreas Gohr    473 => 'CommonMark `****foo****` — excess-drop (4+4 → strong only)',
88*72b2703bSAndreas Gohr    474 => 'CommonMark `____foo____` — excess-drop (4+4 → strong only)',
89*72b2703bSAndreas Gohr    475 => 'CommonMark `******foo******` — excess-drop (6+6 → strong only)',
90*72b2703bSAndreas Gohr    477 => 'CommonMark `_____foo_____` — excess-drop (5+5 → em+strong, 2 dropped each side)',
91*72b2703bSAndreas Gohr
92*72b2703bSAndreas Gohr    // Overlapping / crossing delimiters
93*72b2703bSAndreas Gohr    478 => 'CommonMark `*foo _bar* baz_` — overlapping different delimiters',
94*72b2703bSAndreas Gohr    479 => 'CommonMark `*foo __bar *baz bim__ bam*` — crossing delimiters',
95*72b2703bSAndreas Gohr    480 => 'CommonMark `**foo **bar baz**` — overlapping same delimiter',
96*72b2703bSAndreas Gohr];
97