Page MenuHomePhabricator

Parsoid/legacy parser {{Pre}} template rendering difference
Closed, ResolvedPublicBUG REPORT

Description

Steps to replicate the issue (include links if applicable):

Check
https://en.wikipedia.org/w/index.php?title=Uniform_Resource_Identifier&useparsoid=1#Example_URIs
vs
https://en.wikipedia.org/w/index.php?title=Uniform_Resource_Identifier&useparsoid=0#Example_URIs

What happens?:

The Parsoid version shows all the <span> markup instead of colored text like in the legacy parser version.

What should have happened instead?:

It's not clear to me that this markup is actually valid, but since it does work with the legacy parser, there's probably something to be done there.

Note
Smaller reproducer:

$ echo "{{Pre|{{color|rgb(0,76,178)|userinfo}}}}" | php ./bin/parse.php
<style data-mw-deduplicate="TemplateStyles:r1057110237" typeof="mw:Extension/templatestyles mw:Transclusion" about="#mwt1" data-parsoid='{"pi":[[{"k":"1"}]],"dsr":[0,40,null,null]}' data-mw='{"parts":[{"template":{"target":{"wt":"Pre","href":"./Template:Pre"},"params":{"1":{"wt":"{{color|rgb(0,76,178)|userinfo}}"}},"i":0}}]}'>.mw-parser-output .pre-borderless{border:none}</style><pre class="pre" typeof="mw:Extension/pre" about="#mwt1" data-parsoid='{"stx":"html","src":"&lt;pre class=\"pre \" >&lt;span style=\"color:rgb(0,76,178)\">userinfo&lt;/span>&lt;/pre>"}' data-mw='{"name":"pre","attrs":{"class":"pre"},"body":{"extsrc":"&lt;span style=\"color:rgb(0,76,178)\">userinfo&lt;/span>"}}'>&lt;span style="color:rgb(0,76,178)">userinfo&lt;/span></pre>

Details

Related Changes in Gerrit:
SubjectAuthorRepoBranchLines +/-
Arlolramediawiki/vendorwmf/1.47.0-wmf.11+80 -53
OSlegermediawiki/vendormaster+80 -53
Arlolramediawiki/coremaster+1 -1
Arlolramediawiki/extensions/Lintermaster+3 -3
Arlolramediawiki/coremaster+2 -0
Arlolramediawiki/services/parsoidmaster+23 -17
C. Scott Ananianmediawiki/vendorwmf/1.47.0-wmf.8+414 -121
C. Scott Ananianmediawiki/vendormaster+414 -121
Arlolramediawiki/services/parsoidmaster+34 -0
Arlolramediawiki/extensions/Linterwmf/1.47.0-wmf.7+10 -0
Arlolramediawiki/extensions/Lintermaster+10 -0
Arlolraoperations/mediawiki-configmaster+5 -0
Arlolramediawiki/vendorwmf/1.47.0-wmf.4+117 -30
OSlegermediawiki/vendormaster+117 -30
Arlolramediawiki/services/parsoidmaster+97 -10
C. Scott Ananianmediawiki/services/parsoidmaster+76 -32
Arlolramediawiki/coremaster+32 -16
Isabelle Hurbain-Palatinmediawiki/vendormaster+296 -166
Arlolramediawiki/services/parsoidmaster+46 -19
Arlolramediawiki/services/parsoidmaster+45 -19
Arlolramediawiki/vendormaster+27 K -20 K
Arlolramediawiki/services/parsoidmaster+72 -0
C. Scott Ananianmediawiki/vendormaster+333 -118
Arlolramediawiki/services/parsoidmaster+177 -0
Show related patches Customize query in gerrit

Related Objects

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Please see T412577, which may have been caused by changes related to this bug report at en.WP.

Change #1295505 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/services/parsoid@master] [WIP] Process nowiki for wikitext format pres

https://gerrit.wikimedia.org/r/1295505

Change #1295505 merged by jenkins-bot:

[mediawiki/services/parsoid@master] Process nowiki for wikitext format pres

https://gerrit.wikimedia.org/r/1295505

Change #1295998 had a related patch set uploaded (by OSleger; author: OSleger):

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.24.0-a7

https://gerrit.wikimedia.org/r/1295998

Change #1296002 had a related patch set uploaded (by Arlolra; author: OSleger):

[mediawiki/vendor@wmf/1.47.0-wmf.4] Bump wikimedia/parsoid to 0.24.0-a7

https://gerrit.wikimedia.org/r/1296002

Change #1295998 merged by jenkins-bot:

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.24.0-a7

https://gerrit.wikimedia.org/r/1295998

Change #1296002 merged by jenkins-bot:

[mediawiki/vendor@wmf/1.47.0-wmf.4] Bump wikimedia/parsoid to 0.24.0-a7

https://gerrit.wikimedia.org/r/1296002

Mentioned in SAL (#wikimedia-operations) [2026-06-01T21:04:21Z] <catrope@deploy1003> Started scap sync-world: Backport for [[gerrit:1296002|Bump wikimedia/parsoid to 0.24.0-a7 (T353697 T415591 T427565)]], [[gerrit:1296003|Bump wikimedia/parsoid to 0.24.0-a7 (T427565)]], [[gerrit:1296009|Redirect Special:AccountRecovery to the shared domain (T427692)]]

Mentioned in SAL (#wikimedia-operations) [2026-06-01T21:06:07Z] <catrope@deploy1003> catrope, arlolra: Backport for [[gerrit:1296002|Bump wikimedia/parsoid to 0.24.0-a7 (T353697 T415591 T427565)]], [[gerrit:1296003|Bump wikimedia/parsoid to 0.24.0-a7 (T427565)]], [[gerrit:1296009|Redirect Special:AccountRecovery to the shared domain (T427692)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2026-06-01T21:13:41Z] <catrope@deploy1003> Finished scap sync-world: Backport for [[gerrit:1296002|Bump wikimedia/parsoid to 0.24.0-a7 (T353697 T415591 T427565)]], [[gerrit:1296003|Bump wikimedia/parsoid to 0.24.0-a7 (T427565)]], [[gerrit:1296009|Redirect Special:AccountRecovery to the shared domain (T427692)]] (duration: 09m 20s)

After several attempts to remove the include hack from the enwiki template:pre, it was determined that escape mechanisms weren't being supported correctly.

{{pre|<nowiki>{{AUSinttop}}</nowiki>}}
{{pre|{{((}}Supranational Oceanian Bodies{{))}}}}

For the first one, a patch was deployed and the enwiki template:pre/sandbox was then updated for testing. The test cases on enwiki template:pre/testcases now agree between the legacy parser and Parsoid for the pre/sandbox side,

https://en.wikipedia.org/wiki/Template:Pre/testcases?useparsoid=0
https://en.wikipedia.org/wiki/Template:Pre/testcases?useparsoid=1

However, there's a disagreement between tempate:pre and template:pre/sandbox for the legacy parser exactly in our case 2. above.

The issue there is a double expansion but there's precedent for that with other extension tags. For example,

{{#tag:gallery|
File:Test.jpg{{!}}{{((}}1x{{!}}executed{{))}}
}}

results in a figcaption of executed, not {{1x|executed}}, despite the escaping.

The proposal is to accept the difference between versions of template:pre and update instances making use of the unsupported escaping to use nowikis.

https://en.wikipedia.org/wiki/Template_talk:Pre#c-ABreault_(WMF)-20260605001600-Jonesey95-20260110161100

The proposed change to template pre uses #tag:pre which does eager evaluation where evaluation of templates are expected. After updating template pre, we could category on enwiki every time the pre extension with the wikitext format evaluates a template. That would be a proxy for where the no longer supported escaping is occurring for editors to clean up.

Change #1303511 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/core@master] Add i18n for pre-expansion-category tracking category

https://gerrit.wikimedia.org/r/1303511

Change #1303518 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/services/parsoid@master] Add temporary tracking category to ease updating template pre

https://gerrit.wikimedia.org/r/1303518

Change #1303525 had a related patch set uploaded (by Arlolra; author: Arlolra):

[operations/mediawiki-config@master] Configure $wgTrackPreExpansion

https://gerrit.wikimedia.org/r/1303525

Change #1304631 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/extensions/Linter@master] Add a hidden lint for pre ext tags expanding templates

https://gerrit.wikimedia.org/r/1304631

Change #1303525 abandoned by Arlolra:

[operations/mediawiki-config@master] Configure $wgTrackPreExpansion

Reason:

Can't use a tracking category ATM

https://gerrit.wikimedia.org/r/1303525

Change #1304631 merged by jenkins-bot:

[mediawiki/extensions/Linter@master] Add a hidden lint for pre ext tags expanding templates

https://gerrit.wikimedia.org/r/1304631

Change #1304887 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/extensions/Linter@wmf/1.47.0-wmf.7] Add a hidden lint for pre ext tags expanding templates

https://gerrit.wikimedia.org/r/1304887

Change #1304887 merged by jenkins-bot:

[mediawiki/extensions/Linter@wmf/1.47.0-wmf.7] Add a hidden lint for pre ext tags expanding templates

https://gerrit.wikimedia.org/r/1304887

Mentioned in SAL (#wikimedia-operations) [2026-06-22T20:46:58Z] <arlolra@deploy1003> Started scap sync-world: Backport for [[gerrit:1304887|Add a hidden lint for pre ext tags expanding templates (T353697)]]

Mentioned in SAL (#wikimedia-operations) [2026-06-22T21:06:41Z] <arlolra@deploy1003> arlolra: Backport for [[gerrit:1304887|Add a hidden lint for pre ext tags expanding templates (T353697)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Change #1303518 merged by jenkins-bot:

[mediawiki/services/parsoid@master] Add hidden lint to ease updating enwiki's Template:Pre

https://gerrit.wikimedia.org/r/1303518

Mentioned in SAL (#wikimedia-operations) [2026-06-22T21:20:41Z] <arlolra@deploy1003> Finished scap sync-world: Backport for [[gerrit:1304887|Add a hidden lint for pre ext tags expanding templates (T353697)]] (duration: 33m 42s)

Change #1305690 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.24.0-a12

https://gerrit.wikimedia.org/r/1305690

Change #1305690 merged by jenkins-bot:

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.24.0-a12

https://gerrit.wikimedia.org/r/1305690

Change #1305719 had a related patch set uploaded (by C. Scott Ananian; author: C. Scott Ananian):

[mediawiki/vendor@wmf/1.47.0-wmf.8] Bump wikimedia/parsoid to 0.24.0-a12

https://gerrit.wikimedia.org/r/1305719

Change #1305719 merged by jenkins-bot:

[mediawiki/vendor@wmf/1.47.0-wmf.8] Bump wikimedia/parsoid to 0.24.0-a12

https://gerrit.wikimedia.org/r/1305719

Mentioned in SAL (#wikimedia-operations) [2026-06-25T16:46:32Z] <cscott@deploy1003> Finished scap sync-world: Backport for [[gerrit:1305719|Bump wikimedia/parsoid to 0.24.0-a12 (T353697 T384490 T387374 T387520 T387521 T391624 T393295 T420336 T429624 T429688 T429822)]], [[gerrit:1305720|Bump wikimedia/parsoid to 0.24.0-a12 (T429822)]] (duration: 09m 54s)

After the lint emitting patch was backported just now, I made an edit to Template:Pre on tewiki that brings it in line with the sandbox version on enwiki.

I then made a test edit with the case {{pre|{{((}}1x{{!}}test{{))}}}} as in T412577 and verified it showed up in the lint errors.

The lint did catch a case where pre expansion might have been happening (though it this case, I think we tokenize a template, which is when the lint error is emitted, but then end up stringifying the token so the output was the same anyways)

Change #1303511 merged by jenkins-bot:

[mediawiki/core@master] Add i18n for pre-expansion hidden lint

https://gerrit.wikimedia.org/r/1303511

This fix adds this message: "Wikitext format pre extension tag expanding templates"

I don't really understand it even in English, and the qqq doesn't help either, so I cannot translate it well. Can anyone please improve it?

This fix adds this message: "Wikitext format pre extension tag expanding templates"

I don't really understand it even in English, and the qqq doesn't help either, so I cannot translate it well. Can anyone please improve it?

Sorry, I started to flesh out an explanation in https://www.mediawiki.org/wiki/Help:Lint_errors/pre-expansion

Perhaps a better message would be "Template expansion in a wikitext-formated pre extension tag"

Change #1308793 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/extensions/Linter@master] Make the pre-expansion lint error unhidden

https://gerrit.wikimedia.org/r/1308793

Change #1309299 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/services/parsoid@master] Avoid pre-expansion lint if tokenized template is aborted

https://gerrit.wikimedia.org/r/1309299

Change #1309299 merged by jenkins-bot:

[mediawiki/services/parsoid@master] Avoid pre-expansion lint if tokenized template is aborted

https://gerrit.wikimedia.org/r/1309299

Change #1309663 had a related patch set uploaded (by Arlolra; author: Arlolra):

[mediawiki/core@master] Try to clarify i18n for pre-expansion lint error

https://gerrit.wikimedia.org/r/1309663

Change #1308793 merged by jenkins-bot:

[mediawiki/extensions/Linter@master] Make the pre-expansion lint error unhidden

https://gerrit.wikimedia.org/r/1308793

Change #1309663 merged by jenkins-bot:

[mediawiki/core@master] Try to clarify i18n for pre-expansion lint error

https://gerrit.wikimedia.org/r/1309663

Change #1310144 had a related patch set uploaded (by OSleger; author: OSleger):

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.24.0-a15

https://gerrit.wikimedia.org/r/1310144

Change #1310144 merged by jenkins-bot:

[mediawiki/vendor@master] Bump wikimedia/parsoid to 0.24.0-a15

https://gerrit.wikimedia.org/r/1310144

Change #1312554 had a related patch set uploaded (by Arlolra; author: OSleger):

[mediawiki/vendor@wmf/1.47.0-wmf.11] Bump wikimedia/parsoid to 0.24.0-a15

https://gerrit.wikimedia.org/r/1312554

Change #1312554 merged by jenkins-bot:

[mediawiki/vendor@wmf/1.47.0-wmf.11] Bump wikimedia/parsoid to 0.24.0-a15

https://gerrit.wikimedia.org/r/1312554

Mentioned in SAL (#wikimedia-operations) [2026-07-20T20:17:16Z] <arlolra@deploy2003> Started scap sync-world: Backport for [[gerrit:1312547|Enable PRV on enwiki talk namespace, template namespace]], [[gerrit:1312554|Bump wikimedia/parsoid to 0.24.0-a15 (T221028 T226289 T353697 T430854 T431771)]], [[gerrit:1312556|Bump wikimedia/parsoid to 0.24.0-a15 (T431771)]]

Mentioned in SAL (#wikimedia-operations) [2026-07-20T20:20:59Z] <arlolra@deploy2003> arlolra, cscott: Backport for [[gerrit:1312547|Enable PRV on enwiki talk namespace, template namespace]], [[gerrit:1312554|Bump wikimedia/parsoid to 0.24.0-a15 (T221028 T226289 T353697 T430854 T431771)]], [[gerrit:1312556|Bump wikimedia/parsoid to 0.24.0-a15 (T431771)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2026-07-20T20:32:24Z] <arlolra@deploy2003> Finished scap sync-world: Backport for [[gerrit:1312547|Enable PRV on enwiki talk namespace, template namespace]], [[gerrit:1312554|Bump wikimedia/parsoid to 0.24.0-a15 (T221028 T226289 T353697 T430854 T431771)]], [[gerrit:1312556|Bump wikimedia/parsoid to 0.24.0-a15 (T431771)]] (duration: 15m 07s)