Subramanya Sastry has uploaded a new change for review.
https://gerrit.wikimedia.org/r/115635
Change subject: (Bug 61770) Treat all block tags identically in pre-handler
......................................................................
(Bug 61770) Treat all block tags identically in pre-handler
* Pre-Handler had a check for HTML-syntax block tags (i.e. html
tags that showed up in wikitext). But, xxtensions can generate
block HTML content as well and need to suppress indent-pres
as well.
* This patch removes the special case which fixes the bug.
* Added a new parser test but Parsoid's test runner doesn't have
access to extensions and all those fail for that reason.
Change-Id: I2414ec53136f3012f749a601edea153333854349
---
M lib/ext.core.PreHandler.js
M tests/parserTests-blacklist.js
M tests/parserTests.txt
3 files changed, 28 insertions(+), 6 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/35/115635/1
diff --git a/lib/ext.core.PreHandler.js b/lib/ext.core.PreHandler.js
index 09a9ac5..c1f31db 100644
--- a/lib/ext.core.PreHandler.js
+++ b/lib/ext.core.PreHandler.js
@@ -402,7 +402,7 @@
break;
case PreHandler.STATE_PRE_COLLECT:
- if (token.isHTMLTag && token.isHTMLTag() &&
Util.isBlockTag(token.name)) {
+ if (token.name && Util.isBlockTag(token.name)) {
ret =
this.encounteredBlockWhileCollecting( token );
this.moveToIgnoreState();
} else {
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index 67f726f..bd7e744 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -54,6 +54,7 @@
add("wt2html", "2a. Indent-Pre and tables", " <table
data-parsoid='{\"dsr\":[1,31,2,2]}'>\n <tbody
data-parsoid='{\"dsr\":[5,29,0,0]}'><tr
data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[5,27,2,0]}'>\n
<th data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[9,12,1,0]}'>h1</th><th
data-parsoid='{\"stx_v\":\"row\",\"autoInsertedEnd\":true,\"dsr\":[12,16,2,0]}'>h2</th>\n
<td data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[18,22,1,0]}'>foo</td><td
data-parsoid='{\"stx_v\":\"row\",\"autoInsertedEnd\":true,\"dsr\":[22,27,2,0]}'>bar</td></tr>\n
</tbody></table>");
add("wt2html", "2b. Indent-Pre and tables", " <table
data-parsoid='{\"dsr\":[2,16,2,2]}'>\n <tbody
data-parsoid='{\"dsr\":[6,14,0,0]}'><tr
data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[6,13,2,0]}'>\n<td
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[9,13,1,0]}'>foo</td></tr>\n</tbody></table>");
add("wt2html", "2c. Indent-Pre and tables (bug 42252)", "<table
data-parsoid='{\"dsr\":[0,23,2,2]}'>\n <caption
data-parsoid='{\"dsr\":[4,10,2,null]}'> foo</caption>\n <tbody
data-parsoid='{\"dsr\":[12,21,0,0]}'><tr
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[12,20,0,0]}'><th
data-parsoid='{\"startTagSrc\":\"!
\",\"attrSepSrc\":\"|\",\"autoInsertedEnd\":true,\"dsr\":[12,20,4,0]}'>
bar</th></tr>\n</tbody></table>");
+add("wt2html", "4. Indent-Pre and extension tags", "<pre
data-parsoid='{\"dsr\":[0,39,1,0]}'>a <span typeof=\"mw:Extension/gallery\"
about=\"#mwt1\"
data-parsoid='{\"stx\":\"html\",\"src\":\"<gallery>\\nFile:foobar.jpg\\n</gallery>\",\"tagWidths\":[9,10],\"dsr\":[3,39,9,10]}'><gallery>\nFile:foobar.jpg\n</gallery></span></pre>");
add("wt2html", "Leading pipes outside of tables", "| foo");
add("wt2html", "Leading pipes outside of tables 2", "<p
data-parsoid='{\"dsr\":[0,1,0,0]}'>a</p>\n| foo\n<p
data-parsoid='{\"dsr\":[8,9,0,0]}'>b</p>");
add("wt2html", "Leading pipes outside of tables 3", "<p
data-parsoid='{\"dsr\":[0,1,0,0]}'>a</p>\n| class=\"foo bar\" | baz\n<p
data-parsoid='{\"dsr\":[26,27,0,0]}'>b</p>");
@@ -550,6 +551,7 @@
add("wt2wt", "<nowiki> inside <pre> (bug 13238)",
"<pre>\n<nowiki>\n</pre>\n<pre>\n<nowiki></nowiki>\n</pre>\n<pre><nowiki><nowiki></nowiki>Foo<nowiki></nowiki></nowiki></pre>");
add("wt2wt", "<nowiki> and <pre> preference (first one wins)",
"<pre>\n<nowiki>\n</pre>\n</nowiki>\n</pre>\n\n<nowiki>\n<pre>\n<nowiki>\n</pre>\n</nowiki>\n</pre>\n");
add("wt2wt", "Templates: Indent-Pre: 1f: Wrapping should be based on expanded
content", "{{echo| }}a\n\n{{echo|\n }}a\n\n{{echo|\n b}}\n\n{{echo|a\n
}}b\n\n{{echo|a\n}}\n b\n");
+add("wt2wt", "4. Indent-Pre and extension tags", " a <gallery>\n
File:foobar.jpg\n </gallery>\n");
add("wt2wt", "Leading pipes outside of tables 2", "a\n| foo\n\nb\n");
add("wt2wt", "Leading pipes outside of tables 3", "a\n| class=\"foo bar\" |
baz\n\nb\n");
add("wt2wt", "HTML-pre: 1. embedded newlines",
"<pre>foo</pre>\n\n<pre>\nfoo\n</pre>\n\n<pre>\nfoo\n</pre>\n\n<pre>\n\nfoo\n</pre>");
@@ -728,7 +730,8 @@
add("html2html", "<nowiki> inside <pre> (bug 13238)", "<pre
data-parsoid='{\"dsr\":[0,15,1,0]}'><span typeof=\"mw:Entity\"
data-parsoid='{\"src\":\"&lt;\",\"srcContent\":\"<\",\"dsr\":[1,5,null,null]}'><</span>nowiki<span
typeof=\"mw:Entity\"
data-parsoid='{\"src\":\"&gt;\",\"srcContent\":\">\",\"dsr\":[11,15,null,null]}'>></span></pre>\n\n
<p data-parsoid='{\"dsr\":[18,18,0,0]}'><br
data-parsoid='{\"dsr\":[18,18,0,0]}'/></p>\n\n<pre
data-parsoid='{\"dsr\":[20,53,1,0]}'><span typeof=\"mw:Entity\"
data-parsoid='{\"src\":\"&lt;\",\"srcContent\":\"<\",\"dsr\":[21,25,null,null]}'><</span>nowiki<span
typeof=\"mw:Entity\"
data-parsoid='{\"src\":\"&gt;\",\"srcContent\":\">\",\"dsr\":[31,35,null,null]}'>></span>Foo<span
typeof=\"mw:Entity\"
data-parsoid='{\"src\":\"&lt;\",\"srcContent\":\"<\",\"dsr\":[38,42,null,null]}'><</span>/nowiki<span
typeof=\"mw:Entity\"
data-parsoid='{\"src\":\"&gt;\",\"srcContent\":\">\",\"dsr\":[49,53,null,null]}'>></span></pre>\n");
add("html2html", "Empty pre; pre inside other HTML tags (bug 54946)", "<p
data-parsoid='{\"dsr\":[0,1,0,0]}'>a</p>\n\n<div
data-parsoid='{\"stx\":\"html\",\"dsr\":[3,20,5,6]}'>\n<pre
data-parsoid='{\"dsr\":[9,13,1,0]}'>foo</pre>\n</div>\n \n");
add("html2html", "3a. Indent-Pre and block tags (single-line html)", "<p
data-parsoid='{\"dsr\":[0,20,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,18,8,9]}'> </span>a </p>\n\n<p
data-parsoid='{\"dsr\":[22,46,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[22,40,8,9]}'> </span>foo \n </p>b <div
data-parsoid='{\"stx\":\"html\",\"dsr\":[48,64,5,6]}'> foo </div>\n c
<blockquote data-parsoid='{\"stx\":\"html\",\"dsr\":[68,98,12,13]}'> foo
</blockquote>\n<pre data-parsoid='{\"dsr\":[99,118,1,0]}'><span
data-parsoid='{\"stx\":\"html\",\"dsr\":[100,118,6,7]}'> foo </span></pre>\n");
-add("html2html", "3b. Indent-Pre and block tags (pre-content on separate
line)", "\n<p data-parsoid='{\"dsr\":[1,22,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[1,19,8,9]}'> </span>foo</p>\n\n<div
data-parsoid='{\"stx\":\"html\",\"dsr\":[24,42,5,6]}'>\n<pre
data-parsoid='{\"dsr\":[30,34,1,0]}'>foo</pre>\n\n</div>\n<center
data-parsoid='{\"stx\":\"html\",\"dsr\":[43,67,8,9]}'>\n<pre
data-parsoid='{\"dsr\":[52,56,1,0]}'>foo</pre>\n\n</center>\n<blockquote
data-parsoid='{\"stx\":\"html\",\"dsr\":[68,100,12,13]}'>\n<p
data-parsoid='{\"dsr\":[81,85,0,0]}'> foo</p>\n\n</blockquote>\n<blockquote
data-parsoid='{\"stx\":\"html\",\"dsr\":[101,133,12,13]}'>\n<p
data-parsoid='{\"dsr\":[114,118,0,0]}'> foo</p>\n\n</blockquote>\n<table
data-parsoid='{\"dsr\":[134,147,2,2]}'>\n<tbody
data-parsoid='{\"dsr\":[137,145,0,0]}'><tr
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[137,143,0,0]}'><td
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[137,143,1,0]}'>\n<pre
data-parsoid='{\"dsr\":[139,143,1,0]}'>foo</pre></td></tr>\n\n</tbody></table>\n<ul
data-parsoid='{\"dsr\":[148,154,0,0]}'><li
data-parsoid='{\"dsr\":[148,154,1,0]}'> foo</li></ul>\n");
+add("html2html", "3c. Indent-Pre and block tags (pre-content on separate
line)", "\n<p data-parsoid='{\"dsr\":[1,22,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[1,19,8,9]}'> </span>foo</p>\n\n<div
data-parsoid='{\"stx\":\"html\",\"dsr\":[24,42,5,6]}'>\n<pre
data-parsoid='{\"dsr\":[30,34,1,0]}'>foo</pre>\n\n</div>\n<center
data-parsoid='{\"stx\":\"html\",\"dsr\":[43,67,8,9]}'>\n<pre
data-parsoid='{\"dsr\":[52,56,1,0]}'>foo</pre>\n\n</center>\n<blockquote
data-parsoid='{\"stx\":\"html\",\"dsr\":[68,100,12,13]}'>\n<p
data-parsoid='{\"dsr\":[81,85,0,0]}'> foo</p>\n\n</blockquote>\n<blockquote
data-parsoid='{\"stx\":\"html\",\"dsr\":[101,133,12,13]}'>\n<p
data-parsoid='{\"dsr\":[114,118,0,0]}'> foo</p>\n\n</blockquote>\n<table
data-parsoid='{\"dsr\":[134,147,2,2]}'>\n<tbody
data-parsoid='{\"dsr\":[137,145,0,0]}'><tr
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[137,143,0,0]}'><td
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[137,143,1,0]}'>\n<pre
data-parsoid='{\"dsr\":[139,143,1,0]}'>foo</pre></td></tr>\n\n</tbody></table>\n<ul
data-parsoid='{\"dsr\":[148,154,0,0]}'><li
data-parsoid='{\"dsr\":[148,154,1,0]}'> foo</li></ul>\n");
+add("html2html", "4. Indent-Pre and extension tags", "<p
data-parsoid='{\"dsr\":[0,20,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,18,8,9]}'> </span>a </p>\n\t\t* <div style=\"width:
155px\" data-parsoid='{\"stx\":\"html\",\"dsr\":[25,210,26,6]}'>\n\t\t\t<div
class=\"thumb\" style=\"width: 150px;\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[55,163,41,6]}'><div
style=\"margin:68px auto;\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[96,157,31,6]}'>[/wiki/File:Foobar.jpg
]</div></div>\n\t\t\t<div class=\"gallerytext\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[167,201,25,6]}'>\t\t\t</div>\n\t\t</div>\n");
add("html2html", "Leading pipes outside of tables", "| foo\n");
add("html2html", "Leading pipes outside of tables 2", "<p
data-parsoid='{\"dsr\":[1,2,0,0]}'>a</p>\n| foo\n<p
data-parsoid='{\"dsr\":[9,10,0,0]}'>b</p>\n");
add("html2html", "Leading pipes outside of tables 3", "<p
data-parsoid='{\"dsr\":[1,2,0,0]}'>a</p>\n| class=\"foo bar\" | baz\n<p
data-parsoid='{\"dsr\":[27,28,0,0]}'>b</p>\n");
@@ -1313,8 +1316,9 @@
add("html2wt", "2b. Indent-Pre and tables", "{|\n\n|foo\n|}\n");
add("html2wt", "2c. Indent-Pre and tables (bug 42252)", "{|\n|+ foo\n\n!
bar\n|}\n");
add("html2wt", "3a. Indent-Pre and block tags (single-line html)", "<nowiki>
</nowiki>a \n\n<nowiki> </nowiki>foo \n b <div> foo </div>\n c <blockquote> foo
</blockquote>\n <span> foo </span>\n");
-add("html2wt", "3c. Indent-Pre and block tags (multi-line html)", " a
<span>foo</span>\n\n b <div> foo </div>\n");
-add("html2wt", "3b. Indent-Pre and block tags (pre-content on separate line)",
"\n<nowiki> </nowiki>foo\n\n<div>\n foo\n\n</div>\n<center>\n
foo\n\n</center>\n<blockquote>\n foo\n\n</blockquote>\n<blockquote>\n
foo\n\n</blockquote>\n{|\n|\n foo\n\n|}\n* foo\n");
+add("html2wt", "3b. Indent-Pre and block tags (multi-line html)", " a
<span>foo</span>\n\n b <div> foo </div>\n");
+add("html2wt", "3c. Indent-Pre and block tags (pre-content on separate line)",
"\n<nowiki> </nowiki>foo\n\n<div>\n foo\n\n</div>\n<center>\n
foo\n\n</center>\n<blockquote>\n foo\n\n</blockquote>\n<blockquote>\n
foo\n\n</blockquote>\n{|\n|\n foo\n\n|}\n* foo\n");
+add("html2wt", "4. Indent-Pre and extension tags", "<nowiki> </nowiki>a
\n\t\t* <div style=\"width: 155px\">\n\t\t\t<div class=\"thumb\" style=\"width:
150px;\"><div style=\"margin:68px auto;\">[/wiki/File:Foobar.jpg
]</div></div>\n\t\t\t<div class=\"gallerytext\">\t\t\t</div>\n\t\t</div>\n");
add("html2wt", "Render paragraphs when indent-pre is suppressed in
blocklevels", "<blockquote>\n foo\n\n bar\n\n</blockquote>\n");
add("html2wt", "4. Multiple spaces at start-of-line", "<nowiki> </nowiki>foo
\n foo\n\n{|\n\n|foo\n|}\n");
add("html2wt", "5a. White-space in indent-pre", " a<br>\n \n \n b\n");
@@ -2443,6 +2447,7 @@
add("selser", "2a. Indent-Pre and tables [4,[2,[1,3]]]",
"khzx92odevc84cxr\n{|<!--ofhj20adrkqsq0k9-->\n |-
data-foobar=\"dkq0wspbd866flxr\"\n !h1!!h2\n |foo||bar\n |}");
add("selser", "2c. Indent-Pre and tables (bug 42252) [[4,[3],3,4]]",
"{|<!--ypj7hfyfeggv6lxr-->\n|+<!--budgqhu8gdfb6gvi-->\n|}");
add("selser", "2c. Indent-Pre and tables (bug 42252) [[4,0,0,4]]",
"{|<!--75hp80omksqhncdi-->\n|+ foo\n <!--8xrgwr6xnqj8aor-->|}");
+add("selser", "4. Indent-Pre and extension tags [2]", "z2q1uxsvdja9vn29\n a
<gallery>\nFile:foobar.jpg\n</gallery>");
add("selser", "Leading pipes outside of tables 2 [[3],0,1]", "\n| foo\nb");
add("selser", "Leading pipes outside of tables 2 [2,4,[4]]",
"wzt2av0bjra4i\n\nah9qk64aii99vygb9\nlg9qynm19py14i");
add("selser", "Leading pipes outside of tables 2 [2,0,1]",
"u7zh29lm6ea8m2t9\n\na\n| foo\nb");
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 556f24a..9d9154a 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -2156,7 +2156,7 @@
!!end
!!test
-3c. Indent-Pre and block tags (multi-line html)
+3b. Indent-Pre and block tags (multi-line html)
!!input
a <span>foo</span>
b <div> foo </div>
@@ -2168,7 +2168,7 @@
!!end
!!test
-3b. Indent-Pre and block tags (pre-content on separate line)
+3c. Indent-Pre and block tags (pre-content on separate line)
!!input
<p>
foo
@@ -2231,6 +2231,23 @@
!!end
+!!test
+4. Indent-Pre and extension tags
+!!input
+ a <gallery>
+File:foobar.jpg
+</gallery>
+!!result
+ a <ul class="gallery mw-gallery-traditional">
+ <li class="gallerybox" style="width: 155px"><div style="width:
155px">
+ <div class="thumb" style="width: 150px;"><div
style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img
alt="Foobar.jpg"
src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg"
width="120" height="14" /></a></div></div>
+ <div class="gallerytext">
+ </div>
+ </div></li>
+</ul>
+
+!!end
+
!! test
Leading pipes outside of tables
!! options
--
To view, visit https://gerrit.wikimedia.org/r/115635
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2414ec53136f3012f749a601edea153333854349
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