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\":\"&lt;gallery>\\nFile:foobar.jpg\\n&lt;/gallery>\",\"tagWidths\":[9,10],\"dsr\":[3,39,9,10]}'>&lt;gallery>\nFile:foobar.jpg\n&lt;/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>&lt;nowiki&gt;</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&lt;nowiki&gt;\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\":\"&amp;lt;\",\"srcContent\":\"&lt;\",\"dsr\":[1,5,null,null]}'>&lt;</span>nowiki<span
 typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;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\":\"&amp;lt;\",\"srcContent\":\"&lt;\",\"dsr\":[21,25,null,null]}'>&lt;</span>nowiki<span
 typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;gt;\",\"srcContent\":\">\",\"dsr\":[31,35,null,null]}'>></span>Foo<span
 typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;lt;\",\"srcContent\":\"&lt;\",\"dsr\":[38,42,null,null]}'>&lt;</span>/nowiki<span
 typeof=\"mw:Entity\" 
data-parsoid='{\"src\":\"&amp;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

Reply via email to