Subramanya Sastry has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/381518 )

Change subject: Apply removeUselessPWrappers to all tags except void tags
......................................................................

Apply removeUselessPWrappers to all tags except void tags

* For some reason, this was only being applied to formatting tags.
  Probably an oversight without adequate test coverage.

* Added a new parser test even though we have a newly passing
  test that was previously failing. This new test is clearer in
  terms of testing the p-wrapping expecation here.

Bug: T177115
Change-Id: I591fda8e8e484f4f584a3f97eaefb11e54ec2a4d
---
M lib/wt2html/tt/ParagraphWrapper.js
M tests/parserTests-blacklist.js
M tests/parserTests.txt
3 files changed, 25 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/18/381518/1

diff --git a/lib/wt2html/tt/ParagraphWrapper.js 
b/lib/wt2html/tt/ParagraphWrapper.js
index 1140c82..8431dca 100644
--- a/lib/wt2html/tt/ParagraphWrapper.js
+++ b/lib/wt2html/tt/ParagraphWrapper.js
@@ -98,7 +98,8 @@
        for (var i = 0, n = res.length; i < n; i++) {
                var t = res[i];
                if (i + 2 < n && t.constructor === TagTk && t.name === 'p' && 
!Util.isHTMLTag(t) &&
-                       Consts.HTML.FormattingTags.has((res[i + 1].name || 
'').toUpperCase()) &&
+                       Consts.HTML.HTML5Tags.has((res[i + 1].name || 
'').toUpperCase()) &&
+                       !Consts.HTML.VoidTags.has((res[i + 1].name || 
'').toUpperCase()) &&
                        res[i + 2].constructor === EndTagTk && res[i + 2].name 
=== 'p' && !Util.isHTMLTag(res[i + 2])) {
                        // Init newRes
                        if (newRes === null) {
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index 583c919..beb7da9 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -63,7 +63,6 @@
 add("wt2html", "Space and question mark encoding in interlanguage links 
(T95473)", "<p data-parsoid='{\"dsr\":[0,14,0,0]}'>Blah blah blah</p>\n<link 
rel=\"mw:PageProp/Language\" href=\"http://es.wikipedia.org/wiki/Foo%20bar?\"; 
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"http://es.wikipedia.org/wiki/Foo%20bar?\"},\"sa\":{\"href\":\"es:Foo
 bar?\"},\"dsr\":[15,30,null,null]}'/>");
 add("wt2html", "2. Lists with start-of-line-transparent tokens before bullets: 
Template close", "<ul about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"dsr\":[0,18,0,0],\"firstWikitextNode\":\"UL\",\"pi\":[[{\"k\":\"1\"}]]}'
 data-mw='{\"parts\":[\"*foo 
\",{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"bar\\n\"}},\"i\":0}}]}'><li>foo
 bar</li></ul><span about=\"#mwt1\">\n</span><p 
data-parsoid='{\"dsr\":[18,22,0,0]}'>*baz</p>");
 add("wt2html", "Multiple list tags generated by templates", "<li 
about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[0,44,null,null],\"pi\":[[{\"k\":\"1\"}],[{\"k\":\"1\"}],[{\"k\":\"1\"}]]}'
 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&lt;li>\"}},\"i\":0}},\"a\\n\",{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&lt;li>\"}},\"i\":1}},\"b\\n\",{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&lt;li>\"}},\"i\":2}},\"c\"]}'>a\n</li><li
 about=\"#mwt1\">b\n</li><li about=\"#mwt1\" 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[null,44,null,0]}'>c</li>");
-add("wt2html", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up)", "<p data-parsoid='{\"dsr\":[0,6,0,0]}'><span 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[0,6,6,0]}'></span></p>\n<ul
 data-parsoid='{\"dsr\":[7,32,0,0]}'><li 
data-parsoid='{\"dsr\":[7,22,1,0]}'>a<span 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[16,22,6,0]}'></span></li>\n<li
 data-parsoid='{\"dsr\":[23,32,1,0]}'>b</li></ul>");
 add("wt2html", "Magic Word: {{CURRENTMONTH1}}", "<p about=\"#mwt1\" 
typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,17,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"CURRENTMONTH1\",\"function\":\"currentmonth1\"},\"params\":{},\"i\":0}}]}'>Parser
 function implementation for pf_currentmonth1 missing in Parsoid.</p>");
 add("wt2html", "Magic Words LOCAL (UTC)", "<ul 
data-parsoid='{\"dsr\":[0,252,0,0]}'><li data-parsoid='{\"dsr\":[0,16,1,0]}'> 
<span about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[2,16,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALMONTH\",\"function\":\"localmonth\"},\"params\":{},\"i\":0}}]}'>01</span></li>\n<li
 data-parsoid='{\"dsr\":[17,34,1,0]}'> <span about=\"#mwt2\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[19,34,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALMONTH1\",\"function\":\"localmonth1\"},\"params\":{},\"i\":0}}]}'>Parser
 function implementation for pf_localmonth1 missing in 
Parsoid.</span></li>\n<li data-parsoid='{\"dsr\":[35,55,1,0]}'> <span 
about=\"#mwt3\" typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[37,55,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALMONTHNAME\",\"function\":\"localmonthname\"},\"params\":{},\"i\":0}}]}'>January</span></li>\n<li
 data-parsoid='{\"dsr\":[56,79,1,0]}'> <span about=\"#mwt4\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[58,79,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALMONTHNAMEGEN\",\"function\":\"localmonthnamegen\"},\"params\":{},\"i\":0}}]}'>January</span></li>\n<li
 data-parsoid='{\"dsr\":[80,102,1,0]}'> <span about=\"#mwt5\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[82,102,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALMONTHABBREV\",\"function\":\"localmonthabbrev\"},\"params\":{},\"i\":0}}]}'>Jan</span></li>\n<li
 data-parsoid='{\"dsr\":[103,117,1,0]}'> <span about=\"#mwt6\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[105,117,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALDAY\",\"function\":\"localday\"},\"params\":{},\"i\":0}}]}'>1</span></li>\n<li
 data-parsoid='{\"dsr\":[118,133,1,0]}'> <span about=\"#mwt7\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[120,133,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALDAY2\",\"function\":\"localday2\"},\"params\":{},\"i\":0}}]}'>01</span></li>\n<li
 data-parsoid='{\"dsr\":[134,152,1,0]}'> <span about=\"#mwt8\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[136,152,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALDAYNAME\",\"function\":\"localdayname\"},\"params\":{},\"i\":0}}]}'>Thursday</span></li>\n<li
 data-parsoid='{\"dsr\":[153,168,1,0]}'> <span about=\"#mwt9\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[155,168,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALYEAR\",\"function\":\"localyear\"},\"params\":{},\"i\":0}}]}'>1970</span></li>\n<li
 data-parsoid='{\"dsr\":[169,184,1,0]}'> <span about=\"#mwt10\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[171,184,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALTIME\",\"function\":\"localtime\"},\"params\":{},\"i\":0}}]}'>00:02</span></li>\n<li
 data-parsoid='{\"dsr\":[185,200,1,0]}'> <span about=\"#mwt11\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[187,200,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALHOUR\",\"function\":\"localhour\"},\"params\":{},\"i\":0}}]}'>00</span></li>\n<li
 data-parsoid='{\"dsr\":[201,216,1,0]}'> <span about=\"#mwt12\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[203,216,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALWEEK\",\"function\":\"localweek\"},\"params\":{},\"i\":0}}]}'>1</span></li>\n<li
 data-parsoid='{\"dsr\":[217,231,1,0]}'> <span about=\"#mwt13\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[219,231,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALDOW\",\"function\":\"localdow\"},\"params\":{},\"i\":0}}]}'>4</span></li>\n<li
 data-parsoid='{\"dsr\":[232,252,1,0]}'> <span about=\"#mwt14\" 
typeof=\"mw:Transclusion\" 
data-parsoid='{\"pi\":[[]],\"dsr\":[234,252,null,null]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"LOCALTIMESTAMP\",\"function\":\"localtimestamp\"},\"params\":{},\"i\":0}}]}'>19700101000203</span></li></ul>");
 add("wt2html", "Magic Word: {{FULLPAGENAMEE}}", "<p about=\"#mwt1\" 
typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,17,0,0],\"pi\":[[]]}' 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"FULLPAGENAMEE\",\"function\":\"fullpagenamee\"},\"params\":{},\"i\":0}}]}'>User:Ævar
 Arnfjörð Bjarmason</p>");
@@ -367,7 +366,6 @@
 add("html2html", "Incorrecly removing closing slashes from correctly formed 
XHTML", "\n");
 add("html2html", "Failing to transform badly formed HTML into correct XHTML", 
"\n\n<p data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[2,2,0,0]}'><br 
data-parsoid='{\"dsr\":[2,2,0,0]}'/></p>\n");
 add("html2html", "Handling html with a br self-closing tag", "\n\n<p 
data-parsoid='{\"dsr\":[2,2,0,0]}'><br 
data-parsoid='{\"dsr\":[2,2,0,0]}'/></p>\n\n\n<p 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[5,5,0,0]}'><br 
data-parsoid='{\"dsr\":[5,5,0,0]}'/></p>\n");
-add("html2html", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up)", "<p data-parsoid='{\"dsr\":[0,6,0,0]}'><span 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[0,6,6,0]}'></span></p>\n\n<ul
 data-parsoid='{\"dsr\":[8,28,0,0]}'><li data-parsoid='{\"dsr\":[8,24,1,0]}'> 
a<span data-parsoid='{\"stx\":\"html\",\"dsr\":[11,24,6,7]}'></span></li>\n<li 
data-parsoid='{\"dsr\":[25,28,1,0]}'> b</li></ul>\n\n<p 
data-parsoid='{\"dsr\":[30,37,0,0]}'></p>");
 add("html2html", "2. List embedded in a formatting tag", "<p 
data-parsoid='{\"dsr\":[0,23,0,0]}'><small 
data-parsoid='{\"stx\":\"html\",\"dsr\":[0,15,7,8]}'></small>\n<small 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[16,23,7,0]}'></small></p><small
 
data-parsoid='{\"stx\":\"html\",\"autoInsertedStart\":true,\"dsr\":[23,36,0,8]}'>\n<ul
 data-parsoid='{\"dsr\":[24,27,0,0]}'><li data-parsoid='{\"dsr\":[24,27,1,0]}'> 
a</li></ul>\n</small>\n<ul data-parsoid='{\"dsr\":[37,55,0,0]}'><li 
data-parsoid='{\"dsr\":[37,55,1,0]}'> <small 
data-parsoid='{\"stx\":\"html\",\"dsr\":[39,55,7,8]}'>b</small></li></ul>\n");
 add("html2html", "Case-sensitive magic words, when cased differently, should 
just be template transclusions", "<p 
data-parsoid='{\"dsr\":[0,331,0,0]}'>[/index.php?title=Template:CurrentMonth&amp;action=edit&amp;redlink=1
 
Template:CurrentMonth]\n[/index.php?title=Template:Currentday&amp;action=edit&amp;redlink=1
 
Template:Currentday]\n[/index.php?title=Template:CURreNTweEK&amp;action=edit&amp;redlink=1
 
Template:CURreNTweEK]\n[/index.php?title=Template:CurrentHour&amp;action=edit&amp;redlink=1
 Template:CurrentHour]</p>\n");
 add("html2html", "Nonexistent template", "<p 
data-parsoid='{\"dsr\":[0,108,0,0]}'>[/index.php?title=Template:Thistemplatedoesnotexist&amp;action=edit&amp;redlink=1
 Template:Thistemplatedoesnotexist]</p>\n");
@@ -1382,17 +1380,19 @@
 add("selser", "Nested lists 6 (both elements empty) [1]", "*\n**");
 add("selser", "Nested lists 6 (both elements empty) [2]", "1ubvum0\n*\n**");
 add("selser", "Nested lists 6 (both elements empty) [[2]]", "* 
1mfyy4i\n*\n**");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[4],0,[[4,4],3,2]]", 
"6evk37\n*1bkqey414fxlv9\n* 1tlvylr\n*b</span>");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [3,0,1]", "*a</span><span>\n*b</span>");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[1],0,1]", "<span 
data-foobar=\"wtsomu\">\n*a</span><span>\n*b</span>");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [2,4,2]", 
"1dnkwk6\n\n<span>\n\ntlvhr1\n\n1y72ei0\n*a</span><span>\n*b</span>");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [0,3,[[0,2],0,2]]", "<span>\n*aj4gdr2<span>\n* 
150sa99\n*b</span>");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [1,0,1]", 
"<span>\n*a</span><span>\n*b</span>");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [1,0,[1,0,2]]", "<span>\n*a<span>\n* 
t3sxhi\n*b</span>");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [2,0,[2,4,1]]", "10r5wut\n\n<span>\n* 
hwebay\n*a</span><span>\n* 7yqij3\n*b");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[3],2,2]", 
"\nl9su4v\n\n1680ylb\n*a</span><span>\n*b</span>");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[3],4,2]", 
"\n2tpwx7\n\n8nzepg\n*a</span><span>\n*b</span>");
-add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[1],0,2]", "<span 
data-foobar=\"avs9ll\">\n\n1ymwgrv\n*a</span><span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[4,[[0,4],4,2]]]", 
"<span>6evk37\n*a1bkqey4\n* 14fxlv9\n* 1tlvylr\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[3,2]]", 
"<span>aidn8e\n*a</span><span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[2,2]]", 
"<span>11c26il\n16o8esk\n*a</span><span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [2]", 
"1dnkwk6<span>\n*a</span><span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[0,[[0,4],4,0]]]", "<span>\n*ag6v00b\n* 
1jvrh2a\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[0,2]]", 
"<span>\nj4gdr2\n*a</span><span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [1]", "<span 
data-foobar=\"1kh4im7\">\n*a</span><span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[0,1]]", 
"<span>\n*a</span><span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[2,[[0,4],0,0]]]", 
"<span>l4f7sa\n*av28est\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[4,[1,0,0]]]", 
"<span>1sgnk8z\n*a<span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[3,1]]", 
"<span>\n*a</span><span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[4,2]]", 
"<span>15kvle39ga9uf\n*a</span><span>\n*b</span>");
+add("selser", "Unbalanced closing non-block tags don't break a list\n(php 
parser relies on Tidy to fix up) [[2,[2,0,[2]]]]", "<span>avs9ll\n* 
1ymwgrv\n*a</span><span>\n*13j9zx7b");
 add("selser", "Table with missing opening <tr> tag [[2,[[4,3],3]]]", 
"<table><!--1tf32as-->\n<td>1pozjc1</td></tr>\n</table>");
 add("selser", "Table with missing opening <tr> tag [[2,[0,3]]]", 
"<table><!--1ch5rmb-->\n<td>foo</td>\n</tr>\n</table>");
 add("selser", "Template with invalid target containing tags [2]", 
"14gbmgd\n\n{{a<b>b</b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}");
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 2064e03..6072997 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -1913,6 +1913,16 @@
 !! end
 
 !! test
+No p-wrappable content
+!! wikitext
+<span><div>x</div></span>
+!! html+tidy
+<span><div>x</div></span>
+!! html/parsoid
+<span><div>x</div></span>
+!! end
+
+!! test
 Block tag on one line (<blockquote>)
 !! wikitext
 a <blockquote>foo</blockquote>

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I591fda8e8e484f4f584a3f97eaefb11e54ec2a4d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>

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

Reply via email to