jenkins-bot has submitted this change and it was merged.

Change subject: New category doesn't need indent-pre nowiki protection
......................................................................


New category doesn't need indent-pre nowiki protection

 * Probably should be generalized to other SOL cases, if this is the
   right approach.

Change-Id: Ic74170cf6746e971c4f728a2f36c5ba47142835e
---
M lib/mediawiki.WikitextSerializer.js
M tests/parserTests-blacklist.js
M tests/parserTests.txt
3 files changed, 22 insertions(+), 7 deletions(-)

Approvals:
  Subramanya Sastry: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/mediawiki.WikitextSerializer.js 
b/lib/mediawiki.WikitextSerializer.js
index 0ab4fd4..515813a 100644
--- a/lib/mediawiki.WikitextSerializer.js
+++ b/lib/mediawiki.WikitextSerializer.js
@@ -1072,10 +1072,11 @@
 };
 
 function stripUnnecessaryIndentPreNowikis(wt) {
-       var pieces = wt.split(/(^<nowiki>\s+<\/nowiki>)([^\n]*(?:\n|$))/m);
+       var pieces = 
wt.split(/^((?:<!--(?:[^\-]|-(?!->))*-->)*)(<nowiki>\s+<\/nowiki>)([^\n]*(?:\n|$))/m);
        var out = pieces[0];
-       for (var i = 1; i < pieces.length; i += 3) {
-               var nowiki = pieces[i], rest = pieces[i+1];
+       for (var i = 1; i < pieces.length; i += 4) {
+               out += pieces[i];
+               var nowiki = pieces[i+1], rest = pieces[i+2];
                // Ignore comments
                var htmlTags = rest.match(/<[^!][^<>]*>/g) || [];
                var reqd = true;
@@ -1091,15 +1092,20 @@
                                reqd = true;
                                break;
                        } else if (Consts.HTML.BlockTags.has(tagName)) {
-                               // Block tags on a line suppres nowikis
+                               // Block tags on a line suppress nowikis
                                reqd = false;
                        }
+               }
+
+               // Just spaces and categories, huh
+               if ( reqd && /^(\[\[Category\:[^\]]*?\]\]|\s)*$/.test( rest ) ) 
{
+                       reqd = false;
                }
 
                if (!reqd) {
                        nowiki = nowiki.replace(/^<nowiki>(\s+)<\/nowiki>/, 
'$1');
                }
-               out = out + nowiki + rest + pieces[i+2];
+               out = out + nowiki + rest + pieces[i+3];
        }
        return out;
 }
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index f83dded..f5c730d 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -2367,8 +2367,7 @@
 add("selser", "Render invalid page names as plain text (bug 51090) [2,0,3]", 
"uy7lbslcu8mvaemi\n\n[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]\n");
 add("selser", "Render invalid page names as plain text (bug 51090) 
[2,0,[2,0,0,0,4,0,4,0,0,0,4,0,0,0,0,0,0,0,0,0,3,0,2]]", 
"ixtw0uq17iqtcsor\n\n[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]\n\ncjgyt6cnj124kj4i[[{{echo|./../foo}}|bar]]\n[[{{echo|foo/.}}4i3f1qev8b5u3di{{echo|foo/..}}t26yvjmagszl4n29{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}3vx6jfw5gbvs4i{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}{{echo|foo<bar}}<nowiki>3vz7g6pd5lzhncdi]]</nowiki>");
 add("selser", "Category / paragraph interactions 
[[0,3,2],0,2,4,[3,2,0],0,[2],3,0,[3],0,[3,3,4,1,4,2,3],0,3,4,0,4,3,0,0,2,0,0,0]",
 "Foo 83zrad4tpxxkcsor Bar\n\nysekf8brayr885mi\n\nFoo 
[[Category:Baz]]\nBar\n\nduknjpcnvnyzxgvi\n\nhroyapi5paqhncdi[[Category:Baz]]\nBar\n\nmsiv1cjc1q8e61orFoo\n[[Category:Baz]]
 
\n\nljrvpzob03tedn29[[Category:Baz]]6bqrn9ug03npcik95jcarnywu55klnmi[[Category:Baz]]\n\nik3u2lqitfomkj4i[[Category:Baz]]\nn8wwykwa78f72e29\n\n[[Category:Baz]]\n9dl89xg0l57phkt9\n
 {{echo|[[Category:Baz]]}}\n[[Category:Baz]]");
-add("selser", "Category / paragraph interactions 
[4,0,0,0,[4,1,0],3,3,0,0,0,2,[2,0,0,1,3,0,0],0,1,3,0,2,0,2,0,0,0,4,2]", 
"y2ksxygpidn7y14i\n\nFoo 
[[Category:Baz]]\nBar\n\ntqcbbea7bmiy66r[[Category:Baz]]\nBar\n[[Category:Baz]] 
Bar\nc42dqedyb3u6usor\n\ndjmvd61k80kymn29Foo\n[[Category:Baz]]\n 
[[Category:Baz]][[Category:Baz]]\nBar\n\n[[Category:Baz]]\n<nowiki> 
</nowiki>[[Category:Baz]]\nvyv3u18bgs4z33di\n[[Category:Baz]]\ne98vfkx1eqld6lxr\n\n[[Category:Baz]]\n
 
{{echo|[[Category:Baz]]}}\nviznyhgcd9muz0k9\n\nd830mwe1qg1oflxr[[Category:Baz]]");
-add("selser", "Category / paragraph interactions 
[[0,1,0],0,[2,0,4],4,[0,2,4],0,1,0,0,0,0,3,0,2,0,0,2,0,3,3,0,0,0,0]", "Foo 
[[Category:Baz]] Bar\n\n9o6ehd9bnpuba9k9Foo 
[[Category:Baz]]hykpnr0z0mdvx6r\n\nwfd3z9z3ux0nqaor\n\nFoo\nts1y9gdg8f0nqaor[[Category:Baz]]8kkz36bki8tihpvi\n\nFoo\n[[Category:Baz]]
 Bar\n\nnarm95sza9ssjor[[Category:Baz]]\n 
[[Category:Baz]]\nd3pv2h2yewcj714i\n[[Category:Baz]]\n 
{{echo|[[Category:Baz]]}}\n[[Category:Baz]]");
+add("selser", "Category / paragraph interactions 
[4,0,0,0,[4,1,0],3,3,0,0,0,2,[2,0,0,1,3,0,0],0,1,3,0,2,0,2,0,0,0,4,2]", 
"y2ksxygpidn7y14i\n\nFoo 
[[Category:Baz]]\nBar\n\ntqcbbea7bmiy66r[[Category:Baz]]\nBar\n[[Category:Baz]] 
Bar\nc42dqedyb3u6usor\n\ndjmvd61k80kymn29Foo\n[[Category:Baz]]\n 
[[Category:Baz]][[Category:Baz]]\nBar\n\n[[Category:Baz]]\n 
[[Category:Baz]]\nvyv3u18bgs4z33di\n[[Category:Baz]]\ne98vfkx1eqld6lxr\n\n[[Category:Baz]]\n
 
{{echo|[[Category:Baz]]}}\nviznyhgcd9muz0k9\n\nd830mwe1qg1oflxr[[Category:Baz]]");
 add("selser", "Category / paragraph interactions 
[1,0,1,0,1,0,1,0,0,0,2,[4,0,0,0,0,4,0],3,0,4,0,0,1,4,4,0,0,3,0]", "Foo 
[[Category:Baz]] Bar\n\nFoo 
[[Category:Baz]]\nBar\n\nFoo\n[[Category:Baz]]\nBar\n\nFoo\n[[Category:Baz]] 
Bar\nqyq2tw4tbcjfko6r\n\n8rsqjn6ahwoecdi[[Category:Baz]]\n 
[[Category:Baz]]\n7qub38k3od0od2t9\nBar\n\n[[Category:Baz]]\njml3cn3gxdt5ipb9[[Category:Baz]]\n[[Category:Baz]]\n7www48dkmtg74x6r\n\nfddlp7i37zwr8uxr\n
 {{echo|[[Category:Baz]]}}[[Category:Baz]]");
 add("selser", "Section headings with TOC [3,4,0,0,3,2,[3],3,0,4,3,3,0]", 
"px8b3ng5n4lpu8fr\n\n=== Subheadline 1 
===\np64mngpetwfm9529\n\n======<nowiki/>======\n\n== Headline 2 
==\nzvfwz386e7xbhuxr\n\n===Another headline===");
 add("selser", "Handling of sections up to level 6 and beyond 
[1,2,1,2,1,0,[3],2,2,4,[2],4,0,0,1,0,0,3,1]", "= Level 1 
Heading=\n7e043zzvvtzf47vi\n\n== Level 2 Heading==\n0pp0pcwrmkakyb9\n\n=== 
Level 3 
Heading===\n====<nowiki/>====\n253vnq49otg9zfr\nmncpvxste96vquxr\n\n===== Level 
5 Heading=====\n91qmbb1e2vlpu8fr\n\n======ohqkkrlkoqi79zfr Level 6 
Heading======\n6hv8gbhdqngn9udi\n\n======= Level 7 
Heading=======\n======<nowiki>== Level 8 Heading==</nowiki>======\n========= 
Level 9 Heading=========\n======<nowiki>==== Level 10 
Heading====</nowiki>======");
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index d9a5482..a39c373 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -22404,6 +22404,16 @@
 !! end
 
 !! test
+New category doesn't need indent-pre nowiki protection
+!! options
+parsoid=html2wt
+!! html
+<!-- this is great -->    <link rel="mw:PageProp/Category" 
href="./Category:Good" />
+!! wikitext
+<!-- this is great -->    [[Category:Good]]
+!! end
+
+!! test
 New interlanguage links (href variations)
 !! options
 parsoid=html2wt

-- 
To view, visit https://gerrit.wikimedia.org/r/188971
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic74170cf6746e971c4f728a2f36c5ba47142835e
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
Gerrit-Reviewer: Arlolra <[email protected]>
Gerrit-Reviewer: Marcoil <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to