<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in GfmLists.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>685560eb3044321b3bdd0be40985871ced5f1d05 - add GfmListblock for GFM lists</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/Parsing/Handler/GfmLists.php#685560eb3044321b3bdd0be40985871ced5f1d05</link>
        <description>add GfmListblock for GFM listsGfmListblock captures an entire list block atomically with oneaddSpecialPattern match, then walks the captured text in handle()grouping lines into items. Each item&apos;s body is dedented to itscontent column and parsed by ModeRegistry::getSubParser() soblock content (paragraphs, fenced code, blockquotes, pluginblocks) works inside items uniformly. Sub-parsed calls are wrappedin a Nest call before they reach the outer handler, matching theFootnote pattern: the main handler&apos;s Block rewriter treats nestas opaque and the renderer base class unwraps it transparently,so multi-paragraph items don&apos;t get double-wrapped in &lt;p&gt;.Marker syntax: -, *, + (unordered) or 1-9 digits followed by. or ) (ordered). Indentation is a 2-space-multiple step startingat 0; depth = (indent / 2) + 1, odd indents round down, tabs becometwo spaces. The first ordered item&apos;s number drives the startattribute on &lt;ol&gt; via the listo_open $start parameter.GfmLists subclasses AbstractListsRewriter with the GFM markerparser; the state machine on the base class is shared with DW Lists.GfmListblock loads only when $conf[&apos;syntax&apos;] is markdown or md+dw.Under those settings the DW Listblock is suppressed because the twolist models conflict &#8212; DW&apos;s mandatory 2-space indent rule vs GFM&apos;szero-indent top-level rule, and -/*/+ markers shared. Plugins thatrelied on Listblock loading under md+dw will see it absent there.Sub-parser exclusion set: CATEGORY_BASEONLY (no Header inside listitems) and gfm_listblock itself (defensive guard against re-entryon pathological inputs; nested lists are handled by the outerpattern, not by re-entry).Tests cover marker variants, ordered start numbers, nested lists attwo and three levels, inline formatting inside items, marker-character switches keeping one list, type switches splitting thelist, fenced code inside items, multi-paragraph (loose) items, andtwo regressions on blank-line tolerance inside the captured block.SpecCompatRenderer learns to render the list call sequence, andspec.txt tests for digit/marker-width/lazy-continuation behaviorthat GfmListblock deliberately doesn&apos;t implement are documented ingfm-spec/skip.php with the per-bucket reasons (A-F).Drops two now-obsolete entries from skip.php (image escapes thatland via earlier GfmLink/GfmMedia work) and inlines the Setextexplanation that previously pointed at SPEC.md. Replaces theSPEC.md reference in GfmEmphasisTest with the inline reason.

            List of files:
            /dokuwiki/inc/Parsing/Handler/GfmLists.php</description>
        <pubDate>Tue, 28 Apr 2026 06:23:11 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
</channel>
</rss>
