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\":\"<li>\"}},\"i\":0}},\"a\\n\",{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"<li>\"}},\"i\":1}},\"b\\n\",{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"<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&action=edit&redlink=1
Template:CurrentMonth]\n[/index.php?title=Template:Currentday&action=edit&redlink=1
Template:Currentday]\n[/index.php?title=Template:CURreNTweEK&action=edit&redlink=1
Template:CURreNTweEK]\n[/index.php?title=Template:CurrentHour&action=edit&redlink=1
Template:CurrentHour]</p>\n");
add("html2html", "Nonexistent template", "<p
data-parsoid='{\"dsr\":[0,108,0,0]}'>[/index.php?title=Template:Thistemplatedoesnotexist&action=edit&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