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