<?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 parserutils.php</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2025</copyright>
    <generator>Java</generator><item>
        <title>2e43b79909f3bc04928779d886f68c1242b5d436 - Render locale and plugin-bundled text as DokuWiki syntax</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#2e43b79909f3bc04928779d886f68c1242b5d436</link>
        <description>Render locale and plugin-bundled text as DokuWiki syntaxStatic &quot;intro&quot; text shipped with DokuWiki, templates and plugins &#8212;inc/lang/*/*.txt, template locale files, each plugin&apos;s lang/&lt;lc&gt;/*.txt &#8212;is authored in DokuWiki syntax. It is a core/plugin asset, not usercontent. When an admin configures the wiki for Markdown the DW link andmonospace modes are not loaded, so these files render as literal text:[[wiki:syntax]] and &apos;&apos;Save&apos;&apos; pairs survive into the HTML.Pin those entry points to the &apos;dw&apos; flavour via the override added in theprevious commit:- p_locale_xhtml() and tpl_locale_xhtml() pass &apos;dw&apos;.- PluginTrait::locale_xhtml() passes &apos;dw&apos;.- PluginTrait::render_text() / PluginInterface::render_text() gain a  $syntax parameter defaulting to &apos;dw&apos;. The default is &apos;dw&apos;, not null,  because the method predates GFM and its callers pass DW-syntax strings;  plugins rendering user content opt back into the configured syntax with  render_text($text, &apos;xhtml&apos;, null).Locale output is now deterministic across a syntax switch, so its cachesget over-invalidated but never under-invalidated &#8212; acceptable, as thelocale render path is rare and cheap.

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Thu, 04 Jun 2026 12:29:32 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>16999ed115e8a9df3ce15f1efe7e4423b925c1d2 - parserutils: allow callers to override the parse syntax, key cache on it</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#16999ed115e8a9df3ce15f1efe7e4423b925c1d2</link>
        <description>parserutils: allow callers to override the parse syntax, key cache on itWith the registry now carrying the flavour as a parameter, expose thatto callers: p_get_instructions(), p_cached_instructions() andp_cached_output() gain an optional $syntax argument. null (the default)means &quot;use the configured $conf[&apos;syntax&apos;]&quot;, preserving behaviour forevery existing call site; an explicit flavour parses under it regardlessof the wiki&apos;s configured preference.This is what lets bundled assets render deterministically &#8212; e.g. aplugin forcing &apos;dw&apos; on a document whose configured syntax is &apos;md&apos;.Because that case renders the same file under two flavours within onerequest, key both the in-request memo (the $run map) and the on-diskcache on $syntax so the two do not collide. The syntax enters the cachekey only when passed explicitly (non-null); when null the key isunchanged, so existing caches are untouched. Plumbed through newoptional $syntax args on CacheParser / CacheInstructions, appended tothe key string.

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Thu, 04 Jun 2026 12:28:54 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>47a02a102092be9e1e6f1ddaf158bdfffdb13d4f - Parsing: make parse syntax a per-parse value, drop ModeInterface</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#47a02a102092be9e1e6f1ddaf158bdfffdb13d4f</link>
        <description>Parsing: make parse syntax a per-parse value, drop ModeInterfaceThe active parse&apos;s syntax flavour is a per-parse question, not process-global state: within a single request a plugin can render bundledDokuWiki-syntax text inside an otherwise-Markdown page. Yet ModeRegistrywas a singleton that read $conf[&apos;syntax&apos;] and the $PARSER_MODES global,and every mode reached it through ModeRegistry::getInstance() &#8212; so theflavour lived in shared mutable state that two parses in one requestwould fight over.Make the registry a short-lived value instead:- ModeRegistry is constructed once per parse with an explicit $syntax  and injected into Parser, Handler and every mode. getSyntax() /  isDwPreferred() / isMdPreferred() consult $this-&gt;syntax; the  DOKU_UNITTEST-gated mode-list cache hack is gone (each registry is  fresh, nothing to invalidate).- p_get_instructions() is now the single place in the pipeline where  $conf[&apos;syntax&apos;] is read; from there the flavour travels as a  parameter. No code under inc/Parsing/ reads $conf[&apos;syntax&apos;] directly  anymore &#8212; the five syntax-reading modes (Preformatted, GfmHr,  GfmEscape, Externallink, GfmQuote) route through $this-&gt;registry.Keep the two concepts apart, as documented in the ModeRegistry andAbstractMode docblocks: the user&apos;s configured *preference* stays in$conf[&apos;syntax&apos;] for UI code (toolbar, settings), while the activeparse&apos;s syntax is a parameter carried by the registry.$PARSER_MODES is demoted to a deprecated, read-only mirror, publishedduring loadPluginModes() &#8212; third-party syntax plugins (columnlist,alphalist2, phpwikify, skipentity) and the bundled info plugin read theglobal directly, often from their constructors, so the taxonomy muststay visible there. No core code reads the mirror.Fold ModeInterface into AbstractMode while here: getSort()/handle() areabstract, the connect callbacks carry defaults, and the public $Lexer&quot;FIXME should be done by setter&quot; becomes setLexer()/getLexer() injectedby Parser::addMode() alongside the registry. Nested-content resolutionmoves to the allowedCategories()/filterAllowedModes() hooks, resolvedonce when the registry is attached.Tests build their own parser/registry through ParserTestBase::setSyntax()instead of mutating $conf and calling the removed ModeRegistry::reset().

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Thu, 04 Jun 2026 12:27:59 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;gohr@cosmocode.de&gt;</dc:creator>
    </item>
<item>
        <title>71096e46fcbfaeaa808667aba794e77fe2780169 - move handler methods into ParserMode classes and rename Handler</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#71096e46fcbfaeaa808667aba794e77fe2780169</link>
        <description>move handler methods into ParserMode classes and rename HandlerEach ParserMode class now implements handle() from ModeInterface,containing the token handling logic that previously lived as individualmethods on Doku_Handler.The Handler class (formerly Doku_Handler) is the single dispatch point:Lexer passes tokens to Handler::handleToken() which routes to modeobjects, plugins, or returns false. The Lexer only tokenizes andresolves mapHandler aliases.Key changes:- Add handle() to ModeInterface, implemented by all mode classes- Move Doku_Handler to dokuwiki\Parsing\Handler namespace- File extends Code (shared parsing via $type property)- Quotes uses mapHandler() + Handler::getModeName() for sub-modes- Media::parseMedia() replaces Doku_Handler_Parse_Media()- Code::parseHighlightOptions() replaces parse_highlight_options()- Per-parse state (footnote, doublequote) stays on Handler- Deprecated wrappers kept for base/header/internallink/media- Class alias and rector rules added for backward compatibility

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Sat, 18 Apr 2026 15:35:30 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>c8dd1b9d24a2f9905db764a0ac4646fb1e172af4 - introduce ModeRegistry to encapsulate parser mode categories</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#c8dd1b9d24a2f9905db764a0ac4646fb1e172af4</link>
        <description>introduce ModeRegistry to encapsulate parser mode categoriesReplace the global $PARSER_MODES definition in inc/parser/parser.phpwith a ModeRegistry singleton that initializes and manages the modecategories. The global array is still populated for backwardcompatibility with plugins that access it directly.Mode constructors now use ModeRegistry::getModesForCategories()instead of accessing the global directly. p_get_parsermodes() andp_sort_modes() are moved to inc/deprecated.php as thin wrappers.

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Thu, 16 Apr 2026 15:51:43 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>743a69085ea848604e66e72287d87479b11949d6 - &#55358;&#56598; Rector and PHPCS fixes</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#743a69085ea848604e66e72287d87479b11949d6</link>
        <description>&#55358;&#56598; Rector and PHPCS fixes

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Sat, 11 Apr 2026 18:04:50 +0000</pubDate>
        <dc:creator>splitbrain &lt;86426+splitbrain@users.noreply.github.com&gt;</dc:creator>
    </item>
<item>
        <title>093fe67e98c0cdb4b73fd46938e49b64971483c2 - updated rector and applied it</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#093fe67e98c0cdb4b73fd46938e49b64971483c2</link>
        <description>updated rector and applied it

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Sat, 07 Mar 2026 20:26:13 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>99a0b4268939573d3e046affd7b2795d97513f54 - mark nullable types explicitly</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#99a0b4268939573d3e046affd7b2795d97513f54</link>
        <description>mark nullable types explicitlyPHP 8.4 will throw a warning where type hints without a ?prefix are usedand nullable parameters can be passed.I&apos;m not sure if I found all occurances, but we still rarely use typehints, so it might not be many indeed.

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Fri, 22 Nov 2024 16:27:22 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>7a83f336d8c349a6e4f61a9dc3004f8a92263b79 - Merge pull request #4010 from maulanaaghnii/parserutilswarning</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#7a83f336d8c349a6e4f61a9dc3004f8a92263b79</link>
        <description>Merge pull request #4010 from maulanaaghnii/parserutilswarningParserutils Warning

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Tue, 14 Nov 2023 10:03:28 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>e6a82646f2de00d42f662031fafa7171f8513f01 - fix syntax plugin loading</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#e6a82646f2de00d42f662031fafa7171f8513f01</link>
        <description>fix syntax plugin loadingIt turns out our Syntax plugins never implemented the PluginInterface(though they did use the PluginTrait). With our stricter type checkingin the plugin loader, these plugins did not longer load.

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Sun, 03 Sep 2023 16:32:51 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>d4f83172d9533c4d84f450fe22ef630816b21d75 - code style: line breaks</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#d4f83172d9533c4d84f450fe22ef630816b21d75</link>
        <description>code style: line breaks

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Thu, 31 Aug 2023 20:44:40 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>7d34963b3e75ea04c63ec066a6b7a692e123cb53 - coding style: control flow line breaks</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#7d34963b3e75ea04c63ec066a6b7a692e123cb53</link>
        <description>coding style: control flow line breaks

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Thu, 31 Aug 2023 13:04:10 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>177d6836e2f75d0e404be9c566e61725852a1e07 - coding style: control flow whitespaces</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#177d6836e2f75d0e404be9c566e61725852a1e07</link>
        <description>coding style: control flow whitespaces

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Thu, 31 Aug 2023 12:22:35 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>73022918a947abda7eee4d7d2302ffd28fdb78e0 - coding style: PSR12.Classes.ClassInstantiation.MissingParentheses</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#73022918a947abda7eee4d7d2302ffd28fdb78e0</link>
        <description>coding style: PSR12.Classes.ClassInstantiation.MissingParentheses

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Wed, 30 Aug 2023 16:25:29 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>316e3ee67cce340deac79a8c6f89d881b178d094 - codestyle adjustments: EOF new lines</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#316e3ee67cce340deac79a8c6f89d881b178d094</link>
        <description>codestyle adjustments: EOF new lines

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Wed, 30 Aug 2023 15:10:30 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>51bc25345d6e90747a7ad237fc1568630d1528af - fix codesniffer violations</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#51bc25345d6e90747a7ad237fc1568630d1528af</link>
        <description>fix codesniffer violations

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Tue, 29 Aug 2023 17:51:36 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>24870174d2ee45460ba6bcfe5f5a0ae94715efd7 - Apply rector fixes to the rest of inc</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#24870174d2ee45460ba6bcfe5f5a0ae94715efd7</link>
        <description>Apply rector fixes to the rest of inc

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Tue, 29 Aug 2023 17:42:15 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>fa1a0dc68cfff431f82762d06b3a2c6f3837dc60 - Parserutils Warning</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#fa1a0dc68cfff431f82762d06b3a2c6f3837dc60</link>
        <description>Parserutils Warning

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Mon, 10 Jul 2023 01:49:47 +0000</pubDate>
        <dc:creator>TB Maulana Aghni &lt;tubagus.maulana@runsystem.id&gt;</dc:creator>
    </item>
<item>
        <title>78b498a7f2693854397176be6f5e90772e9868c8 - clean up parserutils (reformatting mostly)</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#78b498a7f2693854397176be6f5e90772e9868c8</link>
        <description>clean up parserutils (reformatting mostly)

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Fri, 10 Mar 2023 17:12:45 +0000</pubDate>
        <dc:creator>Andreas Gohr &lt;andi@splitbrain.org&gt;</dc:creator>
    </item>
<item>
        <title>abca2f794c82ca70bd41b6c7cbaad44369f2de41 - Fix warning on PHP8+ when using the DokuWiki stylemanager</title>
        <link>http://127.0.0.1:8080/history/dokuwiki/inc/parserutils.php#abca2f794c82ca70bd41b6c7cbaad44369f2de41</link>
        <description>Fix warning on PHP8+ when using the DokuWiki stylemanagerFix PHP Warning message of &quot;Trying to access array offset on value of type null&quot; at the bottom of DokuWiki Config Style page. Fixes #3883

            List of files:
            /dokuwiki/inc/parserutils.php</description>
        <pubDate>Fri, 10 Mar 2023 14:43:06 +0000</pubDate>
        <dc:creator>Eduardo Mozart de Oliveira &lt;2974895+eduardomozart@users.noreply.github.com&gt;</dc:creator>
    </item>
</channel>
</rss>
