172b2703bSAndreas Gohr<?php 272b2703bSAndreas Gohr 372b2703bSAndreas Gohr/** 4*451f2842SAndreas Gohr * GFM spec examples that GfmSpecTest should skip, keyed by example number (as numbered in spec.txt). 572b2703bSAndreas Gohr * 6*451f2842SAndreas Gohr * All entries skipped here are things that are explicitly not supported by DokuWiki's Markdown mode, for reasons 7*451f2842SAndreas Gohr * documented in the skip reason (mostly limitations of the single-pass regex lexer). 872b2703bSAndreas Gohr * 9*451f2842SAndreas Gohr * Most of the skipped examples are edge cases that are rarely used in practice. 10*451f2842SAndreas Gohr * 11*451f2842SAndreas Gohr * Entries are ordered by example number, when the underlying spec.txt is updated, its example numbers may shift, 12*451f2842SAndreas Gohr * so the keys here may need to be updated to match the new example numbers. 1372b2703bSAndreas Gohr */ 1472b2703bSAndreas Gohr 1572b2703bSAndreas Gohrreturn [ 16*451f2842SAndreas Gohr 17*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 18*451f2842SAndreas Gohr // Tabs (§2.2) 19b37c6ef7SAndreas Gohr // 20*451f2842SAndreas Gohr // DokuWiki's tab handling is binary: a leading tab (matching \n\t directly after the newline) is the indented-code 21*451f2842SAndreas Gohr // trigger, otherwise tabs are ordinary characters. 22b414dba2SAndreas Gohr // 23*451f2842SAndreas Gohr // CommonMark instead advances each tab to the next 4-column stop and uses the resulting column count to drive 24*451f2842SAndreas Gohr // list-continuation, list-nesting, blockquote-interior, and 4-column indented-code decisions. The column arithmetic 25*451f2842SAndreas Gohr // is what we don't support. 26*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 27*451f2842SAndreas Gohr 28*451f2842SAndreas Gohr 2 => 'Tabs (§2.2): 2 spaces then tab as code trigger - no column arithmetic to advance tab to column 4', 29*451f2842SAndreas Gohr 4 => 'Tabs (§2.2): tab as 4-column lazy continuation in list - list-interior column arithmetic not implemented', 30*451f2842SAndreas Gohr 5 => 'Tabs (§2.2): two tabs (8 columns) inside list item - list-interior column arithmetic not implemented', 31*451f2842SAndreas Gohr 6 => 'Tabs (§2.2): tabs after blockquote marker for code - quote-interior column arithmetic not implemented', 32*451f2842SAndreas Gohr 7 => 'Tabs (§2.2): tabs after list marker for indented code - list-interior column arithmetic not implemented', 33*451f2842SAndreas Gohr 9 => 'Tabs (§2.2): tab as 4-column indent for list nesting - leading tab is code trigger, never a nesting indent', 34*451f2842SAndreas Gohr 11 => 'Tabs (§2.2): thematic break with tab separators - strict bare-run HR rejects internal whitespace', 35*451f2842SAndreas Gohr 36*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 37*451f2842SAndreas Gohr // Thematic breaks aka. HRs (§4.1) 38b414dba2SAndreas Gohr // 39*451f2842SAndreas Gohr // We only support horizontal rules siting at column 0 with no leading, trailing, or internal whitespace. 40*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 41b414dba2SAndreas Gohr 42*451f2842SAndreas Gohr 17 => 'Thematic breaks (§4.1): HR with 0-3 spaces of leading indent - column-0-only opener required', 43*451f2842SAndreas Gohr 19 => 'Thematic breaks (§4.1): HR after paragraph with 4-space indent - Preformatted triggers regardless of state', 44*451f2842SAndreas Gohr 21 => 'Thematic breaks (§4.1): HR with spaces between delimiters (- - -) - no whitespace allowed', 45*451f2842SAndreas Gohr 22 => 'Thematic breaks (§4.1): HR with spaces between delimiters (** * **) - no whitespace allowed', 46*451f2842SAndreas Gohr 23 => 'Thematic breaks (§4.1): HR with spaces between delimiters (- -) - no whitespace allowed', 47*451f2842SAndreas Gohr 24 => 'Thematic breaks (§4.1): HR with internal spaces and trailing whitespace - no whitespace allowed', 48*451f2842SAndreas Gohr 29 => 'Thematic breaks (§4.1): Setext underline disambiguation - Setext headers not supported', 49*451f2842SAndreas Gohr 30 => 'Thematic breaks (§4.1): HR between list items (* * *) - no whitespace allowed', 50*451f2842SAndreas Gohr 31 => 'Thematic breaks (§4.1): HR shape inside list item - HRs not supported inside lists', 51*451f2842SAndreas Gohr 52*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 53*451f2842SAndreas Gohr // ATX headings (§4.2) 54506762f4SAndreas Gohr // 55*451f2842SAndreas Gohr // We only support headers sitting at column 0 with no leading whitespace. 56*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 57*451f2842SAndreas Gohr 58*451f2842SAndreas Gohr 38 => 'ATX headings (§4.2): heading with 0-3 spaces of leading indent - column-0-only opener required', 59*451f2842SAndreas Gohr 40 => 'ATX headings (§4.2): 4-space indent after paragraph as lazy text - no paragraph-open state in lexer', 60*451f2842SAndreas Gohr 41 => 'ATX headings (§4.2): heading with 2-space leading indent - column-0-only opener required', 61*451f2842SAndreas Gohr 49 => 'ATX headings (§4.2): empty heading - XHTML renderer skips blank headings via blank() guard', 62*451f2842SAndreas Gohr 63*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 64*451f2842SAndreas Gohr // Setext (§4.3) 65506762f4SAndreas Gohr // 66*451f2842SAndreas Gohr // Setext headings are not supported. They are hard to pass and nobody uses them anymore. 67*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 68506762f4SAndreas Gohr 69*451f2842SAndreas Gohr 50 => 'Setext (§4.3): heading with emphasis and underline - Setext headings not supported', 70*451f2842SAndreas Gohr 51 => 'Setext (§4.3): heading with multi-line content - Setext headings not supported', 71*451f2842SAndreas Gohr 52 => 'Setext (§4.3): heading with indented multi-line content - Setext headings not supported', 72*451f2842SAndreas Gohr 53 => 'Setext (§4.3): heading with any-length underline - Setext headings not supported', 73*451f2842SAndreas Gohr 54 => 'Setext (§4.3): heading with 3-space-indented content/underline - Setext headings not supported', 74*451f2842SAndreas Gohr 55 => 'Setext (§4.3): 4-space-indented content forms code then HR - Setext headings not supported', 75*451f2842SAndreas Gohr 56 => 'Setext (§4.3): underline indented up to 3 spaces with trailing - Setext headings not supported', 76*451f2842SAndreas Gohr 57 => 'Setext (§4.3): 4-space-indented underline (paragraph wins) - Setext headings not supported', 77*451f2842SAndreas Gohr 58 => 'Setext (§4.3): underline with internal spaces (= = / --- -) - Setext and internal-space HR not supported', 78*451f2842SAndreas Gohr 59 => 'Setext (§4.3): trailing spaces in content do not break line - Setext headings not supported', 79*451f2842SAndreas Gohr 60 => 'Setext (§4.3): trailing backslash in content - Setext headings not supported', 80*451f2842SAndreas Gohr 61 => 'Setext (§4.3): block-structure precedence over inline - Setext headings not supported', 81*451f2842SAndreas Gohr 63 => 'Setext (§4.3): underline cannot be lazy continuation in quote - Setext headings not supported', 82*451f2842SAndreas Gohr 65 => 'Setext (§4.3): preceding paragraph becomes heading content - Setext headings not supported', 83*451f2842SAndreas Gohr 66 => 'Setext (§4.3): no blank line required before/after heading - Setext headings not supported', 84*451f2842SAndreas Gohr 70 => 'Setext (§4.3): 4-space-indented content forms code then --- HR - Setext headings not supported', 85*451f2842SAndreas Gohr 72 => 'Setext (§4.3): heading with backslash-escaped marker - Setext headings not supported', 86*451f2842SAndreas Gohr 73 => 'Setext (§4.3): paragraph + heading + paragraph blank-separated - Setext headings not supported', 87*451f2842SAndreas Gohr 75 => 'Setext (§4.3): * * * boundary should be HR not underline - Setext and internal-space HR not supported', 88*451f2842SAndreas Gohr 76 => 'Setext (§4.3): backslash-escaped underline keeps as paragraph - Setext headings not supported', 89b1c59bedSAndreas Gohr 90*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 91*451f2842SAndreas Gohr // Indented code (§4.4) 92685560ebSAndreas Gohr // 93*451f2842SAndreas Gohr // DokuWiki's single-pass lexer cannot carry paragraph-open state across modes, so Preformatted triggers on every \n 94*451f2842SAndreas Gohr // followed by 4-space indent and exits on every blank line. Two CommonMark rules consequently cannot be expressed: 95685560ebSAndreas Gohr // 96*451f2842SAndreas Gohr // - The 4-space indent must NOT open a code block on a paragraph-continuation line — GFM treats it as lazy 97*451f2842SAndreas Gohr // paragraph text. There is no paragraph-open flag to consult. 98*451f2842SAndreas Gohr // - An indented code block MAY span blank lines as long as the next non-blank line is still 4-space indented. 99*451f2842SAndreas Gohr // DokuWiki's exit-on-any-blank-line behavior splits the block. 100309a0852SAndreas Gohr // 101*451f2842SAndreas Gohr // List-interior indented code (79, 80) additionally needs the column arithmetic that the §2.2 tabs family already 102*451f2842SAndreas Gohr // documents as out of scope. 103*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 104*451f2842SAndreas Gohr 105*451f2842SAndreas Gohr 79 => 'Indented code (§4.4): inside list item - list-interior column arithmetic plus paragraph trigger', 106*451f2842SAndreas Gohr 80 => 'Indented code (§4.4): after content in list item - list-interior column arithmetic plus paragraph trigger', 107*451f2842SAndreas Gohr 81 => 'Indented code (§4.4): code block spanning blank lines - fully blank lines exit the block', 108*451f2842SAndreas Gohr 83 => 'Indented code (§4.4): 4-space indent on paragraph continuation - no paragraph-open state in lexer', 109*451f2842SAndreas Gohr 85 => 'Indented code (§4.4): 4-space indent mid-paragraph variant - no paragraph-open state in lexer', 110*451f2842SAndreas Gohr 111*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 112*451f2842SAndreas Gohr // Fenced code (§4.5) 113309a0852SAndreas Gohr // 114*451f2842SAndreas Gohr // Our parser does not support backreferences in regexes, so we cannot enforce the fence-length pairing rules that 115*451f2842SAndreas Gohr // CommonMark requires for closing a fenced code block. 116*451f2842SAndreas Gohr // 117*451f2842SAndreas Gohr // We require fence runs to sit at column 0, no leading spaces allowed. 118*451f2842SAndreas Gohr // 119*451f2842SAndreas Gohr // Unclosed fences stay literal because the single-pass lexer has no notion of container boundaries to close at, 120*451f2842SAndreas Gohr // unlike CommonMark's two-pass block parser. 121*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 122309a0852SAndreas Gohr 123*451f2842SAndreas Gohr 94 => 'Fenced code (§4.5): closer must be >= opener length - no regex backreferences, any 3+ run closes', 124*451f2842SAndreas Gohr 95 => 'Fenced code (§4.5): closer length pairing for tilde fence - no regex backreferences for length pairing', 125*451f2842SAndreas Gohr 96 => 'Fenced code (§4.5): unclosed fence consuming to EOF - no container boundaries in lexer', 126*451f2842SAndreas Gohr 97 => 'Fenced code (§4.5): unclosed fence with intervening short run - no container boundaries in lexer', 127*451f2842SAndreas Gohr 98 => 'Fenced code (§4.5): fence inside blockquote closes at quote end - no container boundaries in lexer', 128*451f2842SAndreas Gohr 101 => 'Fenced code (§4.5): opener indented 1 space - column-0-only policy, indent tolerance out of scope', 129*451f2842SAndreas Gohr 102 => 'Fenced code (§4.5): opener indented 2 spaces - column-0-only policy', 130*451f2842SAndreas Gohr 103 => 'Fenced code (§4.5): opener indented 3 spaces - column-0-only policy', 131*451f2842SAndreas Gohr 105 => 'Fenced code (§4.5): closer indented 2 spaces - column-0-only policy', 132*451f2842SAndreas Gohr 106 => 'Fenced code (§4.5): indented opener with less-indented closer - column-0-only policy', 133*451f2842SAndreas Gohr 107 => 'Fenced code (§4.5): 4-space-indented closer - column-0-only policy, no valid closer, fence stays literal', 134*451f2842SAndreas Gohr 108 => 'Fenced code (§4.5): three-backtick fallback to inline span - backtick spans with n>=3 not implemented', 135*451f2842SAndreas Gohr 109 => 'Fenced code (§4.5): malformed closer with space-broken run - no valid closer, fence stays literal', 136*451f2842SAndreas Gohr 111 => 'Fenced code (§4.5): fence interrupting Setext heading - Setext headings not supported', 137*451f2842SAndreas Gohr 115 => 'Fenced code (§4.5): single-line ``` x ``` - 3+ backtick inline code spans are not implemented', 13874031e46SAndreas Gohr 139*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 140*451f2842SAndreas Gohr // HTML blocks (§4.6) 141*451f2842SAndreas Gohr // 142*451f2842SAndreas Gohr // Raw HTML pass-through is not supported. DokuWiki therefore renders it as escaped text. 143*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 144c4bcbc2eSAndreas Gohr 145*451f2842SAndreas Gohr 118 => 'HTML blocks (§4.6): script/pre/style/textarea tag group - raw HTML pass-through not supported', 146*451f2842SAndreas Gohr 119 => 'HTML blocks (§4.6): table with following content - raw HTML pass-through not supported', 147*451f2842SAndreas Gohr 120 => 'HTML blocks (§4.6): div with leading-space indent - raw HTML pass-through not supported', 148*451f2842SAndreas Gohr 121 => 'HTML blocks (§4.6): closing div tag opens block - raw HTML pass-through not supported', 149*451f2842SAndreas Gohr 122 => 'HTML blocks (§4.6): uppercase DIV with attributes - raw HTML pass-through not supported', 150*451f2842SAndreas Gohr 123 => 'HTML blocks (§4.6): div with id on continuation line - raw HTML pass-through not supported', 151*451f2842SAndreas Gohr 124 => 'HTML blocks (§4.6): div with multi-line attribute - raw HTML pass-through not supported', 152*451f2842SAndreas Gohr 125 => 'HTML blocks (§4.6): div opening - raw HTML pass-through not supported', 153*451f2842SAndreas Gohr 126 => 'HTML blocks (§4.6): div with id attribute - raw HTML pass-through not supported', 154*451f2842SAndreas Gohr 127 => 'HTML blocks (§4.6): div with class attribute spread - raw HTML pass-through not supported', 155*451f2842SAndreas Gohr 128 => 'HTML blocks (§4.6): div with garbage attribute syntax - raw HTML pass-through not supported', 156*451f2842SAndreas Gohr 129 => 'HTML blocks (§4.6): div with anchor and literal asterisks - raw HTML pass-through not supported', 157*451f2842SAndreas Gohr 130 => 'HTML blocks (§4.6): table with closing td/tr/table - raw HTML pass-through not supported', 158*451f2842SAndreas Gohr 131 => 'HTML blocks (§4.6): self-closing div on single line - raw HTML pass-through not supported', 159*451f2842SAndreas Gohr 132 => 'HTML blocks (§4.6): anchor as block-level element - raw HTML pass-through not supported', 160*451f2842SAndreas Gohr 133 => 'HTML blocks (§4.6): unknown tag falls into any-tag group - raw HTML pass-through not supported', 161*451f2842SAndreas Gohr 134 => 'HTML blocks (§4.6): inline tag (i) treated as block - raw HTML pass-through not supported', 162*451f2842SAndreas Gohr 135 => 'HTML blocks (§4.6): closing ins tag opens block - raw HTML pass-through not supported', 163*451f2842SAndreas Gohr 136 => 'HTML blocks (§4.6): del with paragraph break inside - raw HTML pass-through not supported', 164*451f2842SAndreas Gohr 137 => 'HTML blocks (§4.6): del without blank line breaks - raw HTML pass-through not supported', 165*451f2842SAndreas Gohr 138 => 'HTML blocks (§4.6): del with literal asterisks inline - raw HTML pass-through not supported', 166*451f2842SAndreas Gohr 139 => 'HTML blocks (§4.6): pre with language and code child - raw HTML pass-through not supported', 167*451f2842SAndreas Gohr 140 => 'HTML blocks (§4.6): script tag - raw HTML pass-through not supported', 168*451f2842SAndreas Gohr 141 => 'HTML blocks (§4.6): style tag opening - raw HTML pass-through not supported', 169*451f2842SAndreas Gohr 142 => 'HTML blocks (§4.6): unclosed style consuming rest of input - raw HTML pass-through not supported', 170*451f2842SAndreas Gohr 143 => 'HTML blocks (§4.6): style inside blockquote - raw HTML pass-through not supported', 171*451f2842SAndreas Gohr 144 => 'HTML blocks (§4.6): style inside list item - raw HTML pass-through not supported', 172*451f2842SAndreas Gohr 145 => 'HTML blocks (§4.6): style followed by inline content - raw HTML pass-through not supported', 173*451f2842SAndreas Gohr 146 => 'HTML blocks (§4.6): comment with following inline content - raw HTML pass-through not supported', 174*451f2842SAndreas Gohr 147 => 'HTML blocks (§4.6): script tag with body content - raw HTML pass-through not supported', 175*451f2842SAndreas Gohr 148 => 'HTML blocks (§4.6): comment - raw HTML pass-through not supported', 176*451f2842SAndreas Gohr 149 => 'HTML blocks (§4.6): processing instruction - raw HTML pass-through not supported', 177*451f2842SAndreas Gohr 150 => 'HTML blocks (§4.6): DOCTYPE declaration - raw HTML pass-through not supported', 178*451f2842SAndreas Gohr 151 => 'HTML blocks (§4.6): CDATA - raw HTML pass-through not supported', 179*451f2842SAndreas Gohr 152 => 'HTML blocks (§4.6): comment with leading whitespace - raw HTML pass-through not supported', 180*451f2842SAndreas Gohr 153 => 'HTML blocks (§4.6): div with leading whitespace - raw HTML pass-through not supported', 181*451f2842SAndreas Gohr 154 => 'HTML blocks (§4.6): paragraph followed by div - raw HTML pass-through not supported', 182*451f2842SAndreas Gohr 155 => 'HTML blocks (§4.6): div followed by paragraph - raw HTML pass-through not supported', 183*451f2842SAndreas Gohr 156 => 'HTML blocks (§4.6): paragraph then div (any-tag group) - raw HTML pass-through not supported', 184*451f2842SAndreas Gohr 157 => 'HTML blocks (§4.6): div continuation across blank line - raw HTML pass-through not supported', 185*451f2842SAndreas Gohr 158 => 'HTML blocks (§4.6): nested divs with content between - raw HTML pass-through not supported', 186*451f2842SAndreas Gohr 159 => 'HTML blocks (§4.6): table followed by paragraph - raw HTML pass-through not supported', 187*451f2842SAndreas Gohr 160 => 'HTML blocks (§4.6): table with markdown content - raw HTML pass-through not supported', 188b414dba2SAndreas Gohr 189*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 190*451f2842SAndreas Gohr // Link refs (§4.7) 191*451f2842SAndreas Gohr // 192*451f2842SAndreas Gohr // The single-pass lexer cannot resolve forward references, so links by reference are not supported. 193*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 194*451f2842SAndreas Gohr 195*451f2842SAndreas Gohr 161 => 'Link refs (§4.7): basic definition with title - forward-reference definitions not supported', 196*451f2842SAndreas Gohr 162 => 'Link refs (§4.7): definition with leading indent across lines - forward references not supported', 197*451f2842SAndreas Gohr 163 => 'Link refs (§4.7): definition with multi-line title - forward-reference definitions not supported', 198*451f2842SAndreas Gohr 164 => 'Link refs (§4.7): definition with multi-line label - forward-reference definitions not supported', 199*451f2842SAndreas Gohr 165 => 'Link refs (§4.7): single-quote title across newline - forward-reference definitions not supported', 200*451f2842SAndreas Gohr 166 => 'Link refs (§4.7): definition with whitespace-collapsed label - forward-reference definitions not supported', 201*451f2842SAndreas Gohr 167 => 'Link refs (§4.7): definition without matching reference use - forward-reference definitions not supported', 202*451f2842SAndreas Gohr 169 => 'Link refs (§4.7): pointy-bracket destination - forward-reference definitions not supported', 203*451f2842SAndreas Gohr 170 => 'Link refs (§4.7): destination then blank line then title - forward-reference definitions not supported', 204*451f2842SAndreas Gohr 171 => 'Link refs (§4.7): title-only without destination - forward-reference definitions not supported', 205*451f2842SAndreas Gohr 172 => 'Link refs (§4.7): backslash escapes in destination and title - forward-reference definitions not supported', 206*451f2842SAndreas Gohr 173 => 'Link refs (§4.7): definition with reference use following - forward-reference definitions not supported', 207*451f2842SAndreas Gohr 174 => 'Link refs (§4.7): case-insensitive label match - forward-reference definitions not supported', 208*451f2842SAndreas Gohr 175 => 'Link refs (§4.7): Unicode case folding for label - forward-reference definitions not supported', 209*451f2842SAndreas Gohr 176 => 'Link refs (§4.7): single definition with no body - forward-reference definitions not supported', 210*451f2842SAndreas Gohr 177 => 'Link refs (§4.7): definition with surrounding whitespace - forward-reference definitions not supported', 211*451f2842SAndreas Gohr 178 => 'Link refs (§4.7): definition indented up to 3 spaces - forward-reference definitions not supported', 212*451f2842SAndreas Gohr 179 => 'Link refs (§4.7): multi-line with title on next line - forward-reference definitions not supported', 213*451f2842SAndreas Gohr 183 => 'Link refs (§4.7): definition does not interrupt paragraph - forward-reference definitions not supported', 214*451f2842SAndreas Gohr 184 => 'Link refs (§4.7): between blockquote and paragraph - forward-reference definitions not supported', 215*451f2842SAndreas Gohr 185 => 'Link refs (§4.7): lone definition emits nothing - forward-reference definitions not supported', 216*451f2842SAndreas Gohr 186 => 'Link refs (§4.7): definition followed by HR - forward-reference definitions not supported', 217*451f2842SAndreas Gohr 187 => 'Link refs (§4.7): multiple definitions in a row - forward-reference definitions not supported', 218*451f2842SAndreas Gohr 188 => 'Link refs (§4.7): definition inside blockquote - forward-reference definitions not supported', 219*451f2842SAndreas Gohr 220*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 221*451f2842SAndreas Gohr // Paragraphs (§4.8) 222*451f2842SAndreas Gohr // 223*451f2842SAndreas Gohr // We do not support lazy continuation of paragraphs 224*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 225*451f2842SAndreas Gohr 226*451f2842SAndreas Gohr 193 => 'Paragraphs (§4.8): leading whitespace on continuation lines - no paragraph-open state to suppress indent', 227*451f2842SAndreas Gohr 228*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 229*451f2842SAndreas Gohr // Block quotes (§5.1) 230*451f2842SAndreas Gohr // 231*451f2842SAndreas Gohr // We only support block quotes that sit at column 0 with no leading spaces before the > marker. 232*451f2842SAndreas Gohr // 233*451f2842SAndreas Gohr // Lazy continuation of block quotes is not supported - every line of a block quote must start with > at column 0. 234*451f2842SAndreas Gohr // 235*451f2842SAndreas Gohr // Headers are not supported inside block quotes to not mess up TOC and section edit mechanisms. 236*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 237*451f2842SAndreas Gohr 238*451f2842SAndreas Gohr 206 => 'Block quotes (§5.1): header inside - no headers in quotes', 239*451f2842SAndreas Gohr 207 => 'Block quotes (§5.1): header inside with no space after > - no headers in quotes', 240*451f2842SAndreas Gohr 208 => 'Block quotes (§5.1): leading-space > with 1-3 spaces of indent - column-0-only policy', 241*451f2842SAndreas Gohr 210 => 'Block quotes (§5.1): lazy continuation without > on next line - every quote line needs > at column 0', 242*451f2842SAndreas Gohr 211 => 'Block quotes (§5.1): lazy continuation followed by quoted line - every quote line needs > at column 0', 243*451f2842SAndreas Gohr 212 => 'Block quotes (§5.1): Setext underline --- after > foo - Setext headings not supported', 244*451f2842SAndreas Gohr 215 => 'Block quotes (§5.1): fenced code split across boundary - depends on lazy continuation, not implemented', 245*451f2842SAndreas Gohr 216 => 'Block quotes (§5.1): lazy continuation with indented sub-list - every quote line needs > at column 0', 246*451f2842SAndreas Gohr 225 => 'Block quotes (§5.1): lazy continuation across paragraph - every quote line needs > at column 0', 247*451f2842SAndreas Gohr 227 => 'Block quotes (§5.1): lazy continuation with empty line then text - every quote line needs > at column 0', 248*451f2842SAndreas Gohr 228 => 'Block quotes (§5.1): lazy continuation in nested level - every quote line needs > at column 0', 249*451f2842SAndreas Gohr 229 => 'Block quotes (§5.1): lazy continuation across nested levels - every quote line needs > at column 0', 250*451f2842SAndreas Gohr 251*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 252*451f2842SAndreas Gohr // List items (§5.2), Task list (§5.3), Lists (§5.4) 253*451f2842SAndreas Gohr // 254*451f2842SAndreas Gohr // List indentation uses a fixed 2-space-multiple step starting at 0, lazy continuation is not supported. 255*451f2842SAndreas Gohr // 256*451f2842SAndreas Gohr // We do not separate into tight and loose lists, but blank lines inside lists are still allowed and do not 257*451f2842SAndreas Gohr // interrupt the list - they just don't trigger the extra-paragraph wrapping that CommonMark applies to loose lists. 258*451f2842SAndreas Gohr // 259*451f2842SAndreas Gohr // The rewriter groups items by 'u'/'o' type only, not by marker character. 260*451f2842SAndreas Gohr // 261*451f2842SAndreas Gohr // The task-list extension is not supported 262*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 263*451f2842SAndreas Gohr 264*451f2842SAndreas Gohr 232 => 'List items (§5.2): marker-width content-column for indented body - extra spaces after marker collapsed', 265*451f2842SAndreas Gohr 235 => 'List items (§5.2): marker-width content-column with continuation - extra spaces after marker collapsed', 266*451f2842SAndreas Gohr 237 => 'List items (§5.2): ordered nested in >> with 3-space indent - leading-> indent plus marker-width column', 267*451f2842SAndreas Gohr 238 => 'List items (§5.2): bullet inside >> with leading-space continuation - column-0-only > plus interior space', 268*451f2842SAndreas Gohr 241 => 'List items (§5.2): marker-width column with code/paragraph/quote - extra spaces after marker collapsed', 269*451f2842SAndreas Gohr 242 => 'List items (§5.2): marker-width column plus indented code blanks - extra spaces plus blank-spanning code', 270*451f2842SAndreas Gohr 249 => 'List items (§5.2): marker-width content-column for 10. foo - extra spaces after marker collapsed', 271*451f2842SAndreas Gohr 254 => 'List items (§5.2): marker-width content-column edge case - extra spaces after marker collapsed', 272*451f2842SAndreas Gohr 257 => 'List items (§5.2): empty bullet line then content next line - content column from next line not derived', 273*451f2842SAndreas Gohr 258 => 'List items (§5.2): marker-width content-column for 1. foo - extra spaces after marker collapsed', 274*451f2842SAndreas Gohr 263 => 'List items (§5.2): indent ambiguity at column 0/1/2 - 1- or 3-space indent rounded to nearest 2', 275*451f2842SAndreas Gohr 264 => 'List items (§5.2): 1-space-indent nesting variation - 1- or 3-space indent rounded to nearest 2', 276*451f2842SAndreas Gohr 265 => 'List items (§5.2): marker-width with multi-line continuation - extra spaces after marker collapsed', 277*451f2842SAndreas Gohr 266 => 'List items (§5.2): marker-width with multi-line continuation variant - extra spaces after marker collapsed', 278*451f2842SAndreas Gohr 267 => 'List items (§5.2): lazy continuation inside list item - column-0 paragraph wrap not supported', 279*451f2842SAndreas Gohr 268 => 'List items (§5.2): lazy continuation across line break - column-0 paragraph wrap not supported', 280*451f2842SAndreas Gohr 270 => 'List items (§5.2): lazy continuation across blank line - lazy plus loose/tight rules not implemented', 281*451f2842SAndreas Gohr 271 => 'List items (§5.2): lazy continuation in nested quote-list-quote - column-0 paragraph wrap not supported', 282*451f2842SAndreas Gohr 273 => 'List items (§5.2): interrupting paragraph without blank line - requires multi-pass parser to revisit text', 283*451f2842SAndreas Gohr 275 => 'List items (§5.2): 3-space indent rounds to 2 for sub-list - 1- or 3-space indent rounded to nearest 2', 284*451f2842SAndreas Gohr 276 => 'List items (§5.2): marker-width column with mixed types - extra spaces plus marker-character splits', 285*451f2842SAndreas Gohr 277 => 'List items (§5.2): nested markers on a single line - extra spaces after marker collapsed', 286*451f2842SAndreas Gohr 278 => 'List items (§5.2): marker-character switch splits the run - rewriter groups by u/o type, not character', 287*451f2842SAndreas Gohr 279 => 'Task list (§5.3): basic checkbox marker - extension not implemented, literal [ ]/[x] stays as content', 288*451f2842SAndreas Gohr 280 => 'Task list (§5.3): nested checkbox markers - extension not implemented, literal brackets stay as content', 289*451f2842SAndreas Gohr 281 => 'Lists (§5.4): marker-character change unordered (- to +) - rewriter groups by u/o type, not character', 290*451f2842SAndreas Gohr 282 => 'Lists (§5.4): ordered delimiter switch (. to )) - rewriter groups by u/o type, not character', 291*451f2842SAndreas Gohr 284 => 'Lists (§5.4): interrupting paragraph without blank line - requires multi-pass parser', 292*451f2842SAndreas Gohr 286 => 'Lists (§5.4): marker-width column for ordered list - extra spaces after marker collapsed', 293*451f2842SAndreas Gohr 287 => 'Lists (§5.4): triple blank plus indented continuation - loose/tight classification not implemented', 294*451f2842SAndreas Gohr 288 => 'Lists (§5.4): marker-character change at deeper level - rewriter groups by u/o type only', 295*451f2842SAndreas Gohr 289 => 'Lists (§5.4): marker-character change with type switch - rewriter groups by u/o type only', 296*451f2842SAndreas Gohr 290 => 'Lists (§5.4): 1-space-indent variations at top level - nesting indent rounded to nearest 2', 297*451f2842SAndreas Gohr 291 => 'Lists (§5.4): 1-space-indent variations on ordered list - nesting indent rounded to nearest 2', 298*451f2842SAndreas Gohr 292 => 'Lists (§5.4): marker-character change inside nested list - rewriter groups by u/o type only', 299*451f2842SAndreas Gohr 293 => 'Lists (§5.4): marker-character change with mixed indent - u/o-only grouping plus indent rounding', 300*451f2842SAndreas Gohr 294 => 'Lists (§5.4): lazy continuation across types - column-0 wrap plus marker splits not implemented', 301*451f2842SAndreas Gohr 295 => 'Lists (§5.4): lazy continuation in nested list - column-0 paragraph wrap not supported', 302*451f2842SAndreas Gohr 296 => 'Lists (§5.4): lazy continuation across blank line - lazy continuation plus loose/tight not implemented', 303*451f2842SAndreas Gohr 297 => 'Lists (§5.4): blank-line classification in nested list - strict loose/tight rules not implemented', 304*451f2842SAndreas Gohr 298 => 'Lists (§5.4): blank-line classification - strict loose/tight rules not implemented', 305*451f2842SAndreas Gohr 300 => 'Lists (§5.4): blank-line class with marker change - loose/tight plus marker splits not implemented', 306*451f2842SAndreas Gohr 301 => 'Lists (§5.4): blank-line classification plus marker-width - loose/tight plus extra-spaces-after-marker', 307*451f2842SAndreas Gohr 304 => 'Lists (§5.4): blank line between sub-list items - strict loose/tight rules not implemented', 308*451f2842SAndreas Gohr 305 => 'Lists (§5.4): blank line between deeply nested items - strict loose/tight rules not implemented', 309*451f2842SAndreas Gohr 306 => 'Lists (§5.4): blank line at end of loose list - strict loose/tight rules not implemented', 310*451f2842SAndreas Gohr 311*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 312*451f2842SAndreas Gohr // Backslash escapes (§6.1) 313*451f2842SAndreas Gohr // 314*451f2842SAndreas Gohr // These examples exercise escape behavior inside features DokuWiki we do not to support, such as 315*451f2842SAndreas Gohr // raw HTML pass-through, link titles, reference-link definitions. 316*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 317*451f2842SAndreas Gohr 318*451f2842SAndreas Gohr 317 => 'Backslash escapes (§6.1): escapes inside raw HTML - raw HTML pass-through not supported', 319*451f2842SAndreas Gohr 318 => 'Backslash escapes (§6.1): escapes in link title - title attribute discarded, no DW link slot', 320*451f2842SAndreas Gohr 319 => 'Backslash escapes (§6.1): in reference-link definition - forward-reference definitions not supported', 321*451f2842SAndreas Gohr 322*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 323*451f2842SAndreas Gohr // Entity refs (§6.2) 324*451f2842SAndreas Gohr // 325*451f2842SAndreas Gohr // These examples cross into raw HTML pass-through, link-title slots, strict URL rejection, or reference definitions 326*451f2842SAndreas Gohr // — all features that DokuWiki does not implement for reasons documented in their own sections. 327*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 328*451f2842SAndreas Gohr 329*451f2842SAndreas Gohr 327 => 'Entity refs (§6.2): raw HTML tag with entity in attribute - raw HTML pass-through not supported', 330*451f2842SAndreas Gohr 328 => 'Entity refs (§6.2): link with entity-decoded URL and title - title attribute discarded, no DW link slot', 331*451f2842SAndreas Gohr 329 => 'Entity refs (§6.2): reference link with entity-decoded URL - forward-reference definitions not supported', 332*451f2842SAndreas Gohr 337 => 'Entity refs (§6.2): decoded quote inside link URL - permissive URL slot, strict GFM rejection absent', 333*451f2842SAndreas Gohr 334*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 335*451f2842SAndreas Gohr // Code spans (§6.3) 336*451f2842SAndreas Gohr // 337*451f2842SAndreas Gohr // Cross-positional precedence between code spans and emphasis/links would need a pre-scan pass - our single-pass 338*451f2842SAndreas Gohr // lexer matches leftmost-first and cannot reject an earlier opener because a later backtick span would consume its 339*451f2842SAndreas Gohr // closer. 340*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 341*451f2842SAndreas Gohr 342*451f2842SAndreas Gohr 351 => 'Code spans (§6.3): cross-position precedence vs. emphasis - leftmost-match in lexer, no pre-scan', 343*451f2842SAndreas Gohr 352 => 'Code spans (§6.3): span inside link label takes precedence - leftmost-match in lexer, no pre-scan', 344*451f2842SAndreas Gohr 354 => 'Code spans (§6.3): raw HTML tag pass-through - raw HTML pass-through not supported', 345*451f2842SAndreas Gohr 346*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 347*451f2842SAndreas Gohr // Emphasis (§6.4) 348*451f2842SAndreas Gohr // 349*451f2842SAndreas Gohr // DokuWiki's regex lexer uses leftmost-match and cannot apply CommonMark's left/right-flanking rules that 350*451f2842SAndreas Gohr // distinguish word-chars, whitespace, and punctuation for * / _ delimiters, the multiple-of-3 rule for overlapping 351*451f2842SAndreas Gohr // runs, the excess-drop logic for long delimiter runs, or balanced-pair analysis across nested delimiters. 352*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 353*451f2842SAndreas Gohr 354*451f2842SAndreas Gohr 362 => 'Emphasis (§6.4): punctuation-adjacent * left/right flanking - flanking-delimiter analysis not implemented', 355*451f2842SAndreas Gohr 363 => 'Emphasis (§6.4): Unicode whitespace (U+00A0) flanking - lexer is ASCII-only, u-flag-aware regex needed', 356*451f2842SAndreas Gohr 368 => 'Emphasis (§6.4): punctuation-adjacent _ flanking - flanking-delimiter analysis not implemented', 357*451f2842SAndreas Gohr 372 => 'Emphasis (§6.4): intraword _ with punctuation inside - flanking-delimiter analysis not implemented', 358*451f2842SAndreas Gohr 376 => 'Emphasis (§6.4): bare * on next line should not pair - lone * taken as empty list marker, breaks paragraph', 359*451f2842SAndreas Gohr 377 => 'Emphasis (§6.4): * followed by ( as punctuation-adjacent - flanking-delimiter analysis not implemented', 360*451f2842SAndreas Gohr 378 => 'Emphasis (§6.4): nested *(*foo*)* with punctuation - flanking plus balanced-pair analysis not implemented', 361*451f2842SAndreas Gohr 382 => 'Emphasis (§6.4): nested _(_foo_)_ with punctuation - flanking plus balanced-pair analysis not implemented', 362*451f2842SAndreas Gohr 389 => 'Emphasis (§6.4): punctuation-adjacent ** flanking - flanking-delimiter analysis not implemented', 363*451f2842SAndreas Gohr 394 => 'Emphasis (§6.4): punctuation-adjacent __ flanking - flanking-delimiter analysis not implemented', 364*451f2842SAndreas Gohr 395 => 'Emphasis (§6.4): intraword __ left/right flanking - flanking-delimiter analysis not implemented', 365*451f2842SAndreas Gohr 396 => 'Emphasis (§6.4): intraword __ across digits (5__6__78) - flanking-delimiter analysis not implemented', 366*451f2842SAndreas Gohr 397 => 'Emphasis (§6.4): intraword __ with Cyrillic - flanking-delimiter analysis not implemented', 367*451f2842SAndreas Gohr 398 => 'Emphasis (§6.4): __foo, __bar__, baz__ flanking with pairing - flanking-delimiter analysis not implemented', 368*451f2842SAndreas Gohr 401 => 'Emphasis (§6.4): ** followed by ( as punctuation-adjacent - flanking-delimiter analysis not implemented', 369*451f2842SAndreas Gohr 404 => 'Emphasis (§6.4): nested *bar* inside **foo ... foo** - flanking-delimiter analysis not implemented', 370*451f2842SAndreas Gohr 407 => 'Emphasis (§6.4): __ followed by ( as punctuation-adjacent - flanking-delimiter analysis not implemented', 371*451f2842SAndreas Gohr 409 => 'Emphasis (§6.4): __foo__bar intraword close - flanking-delimiter analysis not implemented', 372*451f2842SAndreas Gohr 410 => 'Emphasis (§6.4): intraword __ with leading Cyrillic - flanking-delimiter analysis not implemented', 373*451f2842SAndreas Gohr 411 => 'Emphasis (§6.4): __foo__bar__baz__ multiple pairs - flanking-delimiter analysis not implemented', 374*451f2842SAndreas Gohr 412 => 'Emphasis (§6.4): __(bar)__ punctuation-adjacent - flanking-delimiter analysis not implemented', 375*451f2842SAndreas Gohr 416 => 'Emphasis (§6.4): overlapping _foo _bar_ baz_ - CommonMark rule 9 multiple-of-3 not implemented', 376*451f2842SAndreas Gohr 417 => 'Emphasis (§6.4): overlapping _ / __ with flanking - flanking plus multiple-of-3 not implemented', 377*451f2842SAndreas Gohr 418 => 'Emphasis (§6.4): overlapping *foo *bar** - multiple-of-3 rule not implemented', 378*451f2842SAndreas Gohr 419 => 'Emphasis (§6.4): nested *foo **bar** baz* - balanced-pair analysis not implemented', 379*451f2842SAndreas Gohr 421 => 'Emphasis (§6.4): overlapping *foo**bar* - multiple-of-3 rule not implemented', 380*451f2842SAndreas Gohr 422 => 'Emphasis (§6.4): nested ***foo** bar* - triple-delimiter analysis not implemented', 381*451f2842SAndreas Gohr 423 => 'Emphasis (§6.4): nested *foo **bar*** - triple-delimiter analysis not implemented', 382*451f2842SAndreas Gohr 424 => 'Emphasis (§6.4): nested *foo**bar*** - triple-delimiter analysis not implemented', 383*451f2842SAndreas Gohr 425 => 'Emphasis (§6.4): triple foo***bar***baz - triple-delimiter analysis not implemented', 384*451f2842SAndreas Gohr 426 => 'Emphasis (§6.4): long delimiter runs of mixed lengths - excess-drop logic not implemented', 385*451f2842SAndreas Gohr 427 => 'Emphasis (§6.4): deeply nested *foo **bar *baz* bim** bop* - balanced-pair analysis not implemented', 386*451f2842SAndreas Gohr 428 => 'Emphasis (§6.4): inside link label *foo [*bar*](/url)* - link label is flat string, not re-tokenized', 387*451f2842SAndreas Gohr 434 => 'Emphasis (§6.4): overlapping __foo __bar__ baz__ - multiple-of-3 rule not implemented', 388*451f2842SAndreas Gohr 435 => 'Emphasis (§6.4): ____foo__ bar__ leading long run - excess-drop logic not implemented', 389*451f2842SAndreas Gohr 436 => 'Emphasis (§6.4): **foo **bar**** trailing long run - excess-drop logic not implemented', 390*451f2842SAndreas Gohr 439 => 'Emphasis (§6.4): nested ***foo* bar** - triple-delimiter analysis not implemented', 391*451f2842SAndreas Gohr 440 => 'Emphasis (§6.4): nested **foo *bar*** - triple-delimiter analysis not implemented', 392*451f2842SAndreas Gohr 441 => 'Emphasis (§6.4): deeply nested **foo *bar **baz** bim* bop** - balanced-pair analysis not implemented', 393*451f2842SAndreas Gohr 442 => 'Emphasis (§6.4): inside link label **foo [*bar*](/url)** - link label is flat string, not re-tokenized', 394*451f2842SAndreas Gohr 463 => 'Emphasis (§6.4): __foo_ mixed _ / __ pairing - flanking-delimiter analysis not implemented', 395*451f2842SAndreas Gohr 464 => 'Emphasis (§6.4): _foo__ mixed _ / __ pairing - flanking-delimiter analysis not implemented', 396*451f2842SAndreas Gohr 465 => 'Emphasis (§6.4): ___foo__ run-length analysis - flanking plus run-length analysis not implemented', 397*451f2842SAndreas Gohr 466 => 'Emphasis (§6.4): ____foo_ run-length analysis - flanking plus run-length analysis not implemented', 398*451f2842SAndreas Gohr 467 => 'Emphasis (§6.4): __foo___ run-length analysis - flanking plus run-length analysis not implemented', 399*451f2842SAndreas Gohr 468 => 'Emphasis (§6.4): _foo____ run-length analysis - flanking plus run-length analysis not implemented', 400*451f2842SAndreas Gohr 470 => 'Emphasis (§6.4): nested *_foo_* - balanced-pair analysis not implemented', 401*451f2842SAndreas Gohr 472 => 'Emphasis (§6.4): nested _*foo*_ - balanced-pair analysis not implemented', 402*451f2842SAndreas Gohr 473 => 'Emphasis (§6.4): ****foo**** excess-drop (4+4 to strong) - excess-drop logic not implemented', 403*451f2842SAndreas Gohr 474 => 'Emphasis (§6.4): ____foo____ excess-drop (4+4 to strong) - excess-drop logic not implemented', 404*451f2842SAndreas Gohr 475 => 'Emphasis (§6.4): ******foo****** excess-drop (6+6 to strong) - excess-drop logic not implemented', 405*451f2842SAndreas Gohr 477 => 'Emphasis (§6.4): _____foo_____ excess-drop (5+5 to em+strong) - excess-drop logic not implemented', 406*451f2842SAndreas Gohr 478 => 'Emphasis (§6.4): *foo _bar* baz_ overlapping different - flanking plus balanced-pair not implemented', 407*451f2842SAndreas Gohr 479 => 'Emphasis (§6.4): *foo __bar *baz bim__ bam* crossing - flanking plus balanced-pair not implemented', 408*451f2842SAndreas Gohr 480 => 'Emphasis (§6.4): **foo **bar baz** overlapping same - flanking plus balanced-pair not implemented', 409*451f2842SAndreas Gohr 482 => 'Emphasis (§6.4): crossing link boundary *[bar*](/url) - leftmost-match cannot reject opener crossing link', 410*451f2842SAndreas Gohr 483 => 'Emphasis (§6.4): crossing link _foo [bar_](/url) - leftmost-match cannot reject opener crossing link', 411*451f2842SAndreas Gohr 484 => 'Emphasis (§6.4): raw HTML <img/> adjacent to * - raw HTML pass-through not supported', 412*451f2842SAndreas Gohr 485 => 'Emphasis (§6.4): raw HTML <a href="**"> adjacent to ** - raw HTML pass-through not supported', 413*451f2842SAndreas Gohr 486 => 'Emphasis (§6.4): raw HTML <a href="__"> adjacent to __ - raw HTML pass-through not supported', 414*451f2842SAndreas Gohr 489 => 'Emphasis (§6.4): vs angle-bracket autolink with ** inside URL - leftmost-match cannot reorder spans', 415*451f2842SAndreas Gohr 490 => 'Emphasis (§6.4): vs angle-bracket autolink with __ inside URL - leftmost-match cannot reorder spans', 416*451f2842SAndreas Gohr 417*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 418*451f2842SAndreas Gohr // Links (§6.6) 419*451f2842SAndreas Gohr // 420*451f2842SAndreas Gohr // GfmLink deliberately does not implement several link features: 421*451f2842SAndreas Gohr // 422*451f2842SAndreas Gohr // - Title attribute ("title" / 'title' / (title) after the URL). Parses cleanly but is discarded — DokuWiki link 423*451f2842SAndreas Gohr // instructions have no title slot, and plumbing one through every renderer is out of scope. 424*451f2842SAndreas Gohr // - Pointy-bracket destinations <...>. Rarely used; regex cost and interaction with raw-HTML detection outweigh 425*451f2842SAndreas Gohr // the benefit. 426*451f2842SAndreas Gohr // - Balanced parentheses inside URL destinations. 427*451f2842SAndreas Gohr // - Strict GFM URL rejection (e.g. unquoted whitespace, decoded quote inside URL). GfmLink uses a permissive URL 428*451f2842SAndreas Gohr // slot. 429*451f2842SAndreas Gohr // - Nested brackets in link labels — single-pass lexer cannot resolve, label class forbids brackets so outer 430*451f2842SAndreas Gohr // match fails. 431*451f2842SAndreas Gohr // - Inline formatting inside link labels — label is taken as a flat string and not re-tokenized. 432*451f2842SAndreas Gohr // - Reference links ([text][id], [text][], [foo] with matching definition). Forward references would require a 433*451f2842SAndreas Gohr // two-pass parse; only inline links [text](url) are supported. 434*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 435*451f2842SAndreas Gohr 436*451f2842SAndreas Gohr 493 => 'Links (§6.6): link with title attribute - title slot not supported by DW link instructions', 437*451f2842SAndreas Gohr 495 => 'Links (§6.6): empty URL destination [link]() - GfmLink pattern requires non-empty URL', 438*451f2842SAndreas Gohr 496 => 'Links (§6.6): pointy-bracket link destination - not supported, regex cost outweighs benefit', 439*451f2842SAndreas Gohr 497 => 'Links (§6.6): unquoted whitespace in URL slot - strict GFM URL rejection not implemented', 440*451f2842SAndreas Gohr 498 => 'Links (§6.6): pointy-bracket destination with spaces - not supported', 441*451f2842SAndreas Gohr 500 => 'Links (§6.6): pointy-bracket destination with newline - not supported', 442*451f2842SAndreas Gohr 501 => 'Links (§6.6): pointy-bracket destination containing ) - not supported', 443*451f2842SAndreas Gohr 502 => 'Links (§6.6): pointy-bracket destination with trailing backslash - not supported', 444*451f2842SAndreas Gohr 503 => 'Links (§6.6): malformed pointy-bracket destinations - not supported', 445*451f2842SAndreas Gohr 505 => 'Links (§6.6): balanced parens inside URL destination - regex single-level only', 446*451f2842SAndreas Gohr 507 => 'Links (§6.6): pointy-bracket wrapping unbalanced parens - not supported', 447*451f2842SAndreas Gohr 512 => 'Links (§6.6): destination that parses as title - edge case not supported', 448*451f2842SAndreas Gohr 513 => 'Links (§6.6): three quoting styles for link title - title slot not supported', 449*451f2842SAndreas Gohr 514 => 'Links (§6.6): title with HTML-entity escape - title slot not supported', 450*451f2842SAndreas Gohr 515 => 'Links (§6.6): title separated by non-breaking space - title slot not supported', 451*451f2842SAndreas Gohr 516 => 'Links (§6.6): title with nested balanced quotes - Markdown.pl quirk, not supported', 452*451f2842SAndreas Gohr 517 => 'Links (§6.6): title with different inner quote type - title slot not supported', 453*451f2842SAndreas Gohr 518 => 'Links (§6.6): multi-line link title - title slot not supported', 454*451f2842SAndreas Gohr 520 => 'Links (§6.6): label with literal nested brackets - label class forbids brackets, outer match fails', 455*451f2842SAndreas Gohr 522 => 'Links (§6.6): nested bracket forms inner link only - lexer cannot resolve nested labels', 456*451f2842SAndreas Gohr 524 => 'Links (§6.6): inline formatting inside link label - label is flat string, not re-tokenized', 457*451f2842SAndreas Gohr 526 => 'Links (§6.6): nested links - inner link matches, outer falls back to literal', 458*451f2842SAndreas Gohr 527 => 'Links (§6.6): nested links inside emphasis - leftmost-match cannot resolve nesting', 459*451f2842SAndreas Gohr 528 => 'Links (§6.6): image-as-alt with nested link - alt class forbids brackets, outer image fails', 460*451f2842SAndreas Gohr 529 => 'Links (§6.6): link text grouping vs emphasis - leftmost-match cannot override', 461*451f2842SAndreas Gohr 530 => 'Links (§6.6): emphasis/bracket crossing - leftmost-match cannot override', 462*451f2842SAndreas Gohr 532 => 'Links (§6.6): raw HTML inside link text - raw HTML pass-through not supported', 463*451f2842SAndreas Gohr 533 => 'Links (§6.6): code span inside link text - requires pre-scan pass for cross-position precedence', 464*451f2842SAndreas Gohr 534 => 'Links (§6.6): autolink inside link text - angle-bracket autolinks not supported', 465*451f2842SAndreas Gohr 535 => 'Links (§6.6): reference link [foo][bar] - forward-reference definitions not supported', 466*451f2842SAndreas Gohr 536 => 'Links (§6.6): reference link with emphasis in text - forward-reference definitions not supported', 467*451f2842SAndreas Gohr 537 => 'Links (§6.6): reference link with multi-line text - forward-reference definitions not supported', 468*451f2842SAndreas Gohr 538 => 'Links (§6.6): reference link case-insensitive label - forward-reference definitions not supported', 469*451f2842SAndreas Gohr 539 => 'Links (§6.6): reference link whitespace-collapsed label - forward-reference definitions not supported', 470*451f2842SAndreas Gohr 540 => 'Links (§6.6): reference link with multi-word label - forward-reference definitions not supported', 471*451f2842SAndreas Gohr 541 => 'Links (§6.6): reference link case-insensitive Unicode - forward-reference definitions not supported', 472*451f2842SAndreas Gohr 542 => 'Links (§6.6): reference link with whitespace before label - forward-reference definitions not supported', 473*451f2842SAndreas Gohr 543 => 'Links (§6.6): reference link with whitespace inside brackets - forward-reference definitions not supported', 474*451f2842SAndreas Gohr 544 => 'Links (§6.6): reference link no whitespace before label - forward-reference definitions not supported', 475*451f2842SAndreas Gohr 545 => 'Links (§6.6): reference link first def wins on duplicate - forward-reference definitions not supported', 476*451f2842SAndreas Gohr 546 => 'Links (§6.6): reference link with backslash in label - forward-reference definitions not supported', 477*451f2842SAndreas Gohr 547 => 'Links (§6.6): reference link inline content not parsed - forward-reference definitions not supported', 478*451f2842SAndreas Gohr 548 => 'Links (§6.6): reference link does not interrupt sentences - forward-reference definitions not supported', 479*451f2842SAndreas Gohr 549 => 'Links (§6.6): reference link with empty inner label - forward-reference definitions not supported', 480*451f2842SAndreas Gohr 550 => 'Links (§6.6): reference link [foo][] collapsed form - forward-reference definitions not supported', 481*451f2842SAndreas Gohr 551 => 'Links (§6.6): reference link with bracketed text - forward-reference definitions not supported', 482*451f2842SAndreas Gohr 552 => 'Links (§6.6): reference link with whitespace at boundary - forward-reference definitions not supported', 483*451f2842SAndreas Gohr 553 => 'Links (§6.6): reference link with newline between - forward-reference definitions not supported', 484*451f2842SAndreas Gohr 557 => 'Links (§6.6): reference link with newline-separated label - forward-reference definitions not supported', 485*451f2842SAndreas Gohr 558 => 'Links (§6.6): reference link newline-separated variant - forward-reference definitions not supported', 486*451f2842SAndreas Gohr 560 => 'Links (§6.6): reference link with literal [] - forward-reference definitions not supported', 487*451f2842SAndreas Gohr 561 => 'Links (§6.6): collapsed reference link [foo][] - forward-reference definitions not supported', 488*451f2842SAndreas Gohr 562 => 'Links (§6.6): collapsed reference link with emphasis - forward-reference definitions not supported', 489*451f2842SAndreas Gohr 563 => 'Links (§6.6): collapsed reference link case-insensitive - forward-reference definitions not supported', 490*451f2842SAndreas Gohr 564 => 'Links (§6.6): collapsed reference link with newline - forward-reference definitions not supported', 491*451f2842SAndreas Gohr 565 => 'Links (§6.6): shortcut reference link [foo] - forward-reference definitions not supported', 492*451f2842SAndreas Gohr 566 => 'Links (§6.6): shortcut reference link with emphasis - forward-reference definitions not supported', 493*451f2842SAndreas Gohr 567 => 'Links (§6.6): shortcut reference link with whitespace label - forward-reference definitions not supported', 494*451f2842SAndreas Gohr 568 => 'Links (§6.6): shortcut reference link with multi-word label - forward-reference definitions not supported', 495*451f2842SAndreas Gohr 569 => 'Links (§6.6): shortcut reference link case-insensitive - forward-reference definitions not supported', 496*451f2842SAndreas Gohr 570 => 'Links (§6.6): shortcut reference link with whitespace - forward-reference definitions not supported', 497*451f2842SAndreas Gohr 571 => 'Links (§6.6): shortcut reference link with backslash escape - forward-reference definitions not supported', 498*451f2842SAndreas Gohr 572 => 'Links (§6.6): shortcut reference link with emphasis in label - forward-reference definitions not supported', 499*451f2842SAndreas Gohr 573 => 'Links (§6.6): reference link with literal [foo] - forward-reference definitions not supported', 500*451f2842SAndreas Gohr 574 => 'Links (§6.6): reference link with double bracket [[foo]] - forward-reference definitions not supported', 501*451f2842SAndreas Gohr 575 => 'Links (§6.6): reference link inside paragraph - forward-reference definitions not supported', 502*451f2842SAndreas Gohr 576 => 'Links (§6.6): reference link multi-instance - forward-reference definitions not supported', 503*451f2842SAndreas Gohr 577 => 'Links (§6.6): reference link collapsed-form fallback - forward-reference definitions not supported', 504*451f2842SAndreas Gohr 578 => 'Links (§6.6): reference link shortcut-form fallback - forward-reference definitions not supported', 505*451f2842SAndreas Gohr 579 => 'Links (§6.6): reference link full-form fallback - forward-reference definitions not supported', 506*451f2842SAndreas Gohr 507*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 508*451f2842SAndreas Gohr // Images (§6.7) 509*451f2842SAndreas Gohr // 510*451f2842SAndreas Gohr // We don't have a title slot or support forward references 511*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 512*451f2842SAndreas Gohr 513*451f2842SAndreas Gohr 580 => 'Images (§6.7): image with title attribute - title slot not supported by DW link instructions', 514*451f2842SAndreas Gohr 581 => 'Images (§6.7): reference-style image - forward-reference definitions not supported', 515*451f2842SAndreas Gohr 582 => 'Images (§6.7): nested image-in-image alt - alt forbids brackets, leftmost-match cannot reorder', 516*451f2842SAndreas Gohr 583 => 'Images (§6.7): link inside image alt - alt forbids brackets, leftmost-match cannot reorder', 517*451f2842SAndreas Gohr 584 => 'Images (§6.7): collapsed reference-style image - forward-reference definitions not supported', 518*451f2842SAndreas Gohr 585 => 'Images (§6.7): full reference-style image - forward-reference definitions not supported', 519*451f2842SAndreas Gohr 587 => 'Images (§6.7): image with title attribute variant - title slot not supported', 520*451f2842SAndreas Gohr 588 => 'Images (§6.7): pointy-bracket image destination - not supported, same as link pointy-brackets', 521*451f2842SAndreas Gohr 590 => 'Images (§6.7): reference-style image with label match - forward-reference definitions not supported', 522*451f2842SAndreas Gohr 591 => 'Images (§6.7): reference-style image case-insensitive - forward-reference definitions not supported', 523*451f2842SAndreas Gohr 592 => 'Images (§6.7): collapsed reference-style image ![foo][] - forward-reference definitions not supported', 524*451f2842SAndreas Gohr 593 => 'Images (§6.7): collapsed reference-style image with emphasis - forward-reference definitions not supported', 525*451f2842SAndreas Gohr 594 => 'Images (§6.7): collapsed reference-style case-insensitive - forward-reference definitions not supported', 526*451f2842SAndreas Gohr 595 => 'Images (§6.7): reference-style image with whitespace - forward-reference definitions not supported', 527*451f2842SAndreas Gohr 596 => 'Images (§6.7): shortcut reference-style image ![foo] - forward-reference definitions not supported', 528*451f2842SAndreas Gohr 597 => 'Images (§6.7): shortcut reference-style image with emphasis - forward-reference definitions not supported', 529*451f2842SAndreas Gohr 598 => 'Images (§6.7): image with unescaped nested brackets - literal-fallback behavior not supported', 530*451f2842SAndreas Gohr 599 => 'Images (§6.7): shortcut reference-style case-insensitive - forward-reference definitions not supported', 531*451f2842SAndreas Gohr 600 => 'Images (§6.7): image-via-reference fallback !\[foo] - forward-reference definitions not supported', 532*451f2842SAndreas Gohr 601 => 'Images (§6.7): image-via-reference fallback \![foo] - forward-reference definitions not supported', 533*451f2842SAndreas Gohr 534*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 535*451f2842SAndreas Gohr // Autolinks (§6.8) 536*451f2842SAndreas Gohr // 537*451f2842SAndreas Gohr // Externallink builds one regex per scheme listed in conf/scheme.conf, and only the schemes in that allow-list are 538*451f2842SAndreas Gohr // recognised as bare-URL autolinks. Schemes outside the allow-list (mailto, made-up schemes, localhost) fall 539*451f2842SAndreas Gohr // through to default escaping and the URL is emitted as literal text 540*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 541*451f2842SAndreas Gohr 542*451f2842SAndreas Gohr 605 => 'Autolinks (§6.8): angle-bracket autolink with MAILTO: - mailto not in conf/scheme.conf default allow-list', 543*451f2842SAndreas Gohr 606 => 'Autolinks (§6.8): angle-bracket autolink with a+b+c scheme - scheme not in conf/scheme.conf allow-list', 544*451f2842SAndreas Gohr 607 => 'Autolinks (§6.8): angle-bracket autolink with made-up scheme - scheme not in conf/scheme.conf allow-list', 545*451f2842SAndreas Gohr 609 => 'Autolinks (§6.8): angle-bracket with localhost:5001 - localhost not in conf/scheme.conf allow-list', 546*451f2842SAndreas Gohr 547*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 548*451f2842SAndreas Gohr // Raw HTML (§6.10) 549*451f2842SAndreas Gohr // 550*451f2842SAndreas Gohr // We do not support raw HTML pass-through at all. 551*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 552*451f2842SAndreas Gohr 553*451f2842SAndreas Gohr 632 => 'Raw HTML (§6.10): open tag - pass-through not supported', 554*451f2842SAndreas Gohr 633 => 'Raw HTML (§6.10): closing tag - pass-through not supported', 555*451f2842SAndreas Gohr 634 => 'Raw HTML (§6.10): tag with multi-line attributes - pass-through not supported', 556*451f2842SAndreas Gohr 635 => 'Raw HTML (§6.10): tag with line breaks in attributes - pass-through not supported', 557*451f2842SAndreas Gohr 636 => 'Raw HTML (§6.10): tag with custom name and attributes - pass-through not supported', 558*451f2842SAndreas Gohr 638 => 'Raw HTML (§6.10): tag with illegal attribute names - pass-through not supported', 559*451f2842SAndreas Gohr 639 => 'Raw HTML (§6.10): tag with illegal attribute values - pass-through not supported', 560*451f2842SAndreas Gohr 641 => 'Raw HTML (§6.10): open and closing tags pair - pass-through not supported', 561*451f2842SAndreas Gohr 642 => 'Raw HTML (§6.10): HTML comment - pass-through not supported', 562*451f2842SAndreas Gohr 643 => 'Raw HTML (§6.10): invalid comment - pass-through not supported', 563*451f2842SAndreas Gohr 644 => 'Raw HTML (§6.10): processing instruction - pass-through not supported', 564*451f2842SAndreas Gohr 645 => 'Raw HTML (§6.10): declaration - pass-through not supported', 565*451f2842SAndreas Gohr 646 => 'Raw HTML (§6.10): declaration with single-letter name - pass-through not supported', 566*451f2842SAndreas Gohr 647 => 'Raw HTML (§6.10): EMPTY declaration - pass-through not supported', 567*451f2842SAndreas Gohr 648 => 'Raw HTML (§6.10): CDATA section - pass-through not supported', 568*451f2842SAndreas Gohr 649 => 'Raw HTML (§6.10): tag with entity ref in attribute - pass-through not supported', 569*451f2842SAndreas Gohr 650 => 'Raw HTML (§6.10): tag with backslash in attribute - pass-through not supported', 570*451f2842SAndreas Gohr 651 => 'Raw HTML (§6.10): tag with entity quote in attribute - pass-through not supported', 571*451f2842SAndreas Gohr 572*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 573*451f2842SAndreas Gohr // Raw HTML (§6.11) 574*451f2842SAndreas Gohr // 575*451f2842SAndreas Gohr // The Disallowed Raw HTML extension is a filter on top of raw HTML pass-through. DokuWiki escapes raw HTML by 576*451f2842SAndreas Gohr // policy, so the filter has no input to operate on. 577*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 578*451f2842SAndreas Gohr 579*451f2842SAndreas Gohr 652 => 'Raw HTML (§6.11): disallowed-tag filter on output - DW escapes raw HTML by policy, filter has no input', 580*451f2842SAndreas Gohr 581*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 582*451f2842SAndreas Gohr // Hard breaks (§6.12) 583*451f2842SAndreas Gohr // 584*451f2842SAndreas Gohr // The skipped cases sit inside raw HTML tags, which DokuWiki does not pass through by default. 585*451f2842SAndreas Gohr // ----------------------------------------------------------------------------------------------------------------- 586*451f2842SAndreas Gohr 587*451f2842SAndreas Gohr 662 => 'Hard breaks (§6.12): inside raw HTML tag - raw HTML pass-through not supported', 588*451f2842SAndreas Gohr 663 => 'Hard breaks (§6.12): backslash form inside raw HTML tag - raw HTML pass-through not supported', 589*451f2842SAndreas Gohr 59072b2703bSAndreas Gohr]; 591