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

Change subject: Render paragraphs when indent-pre is suppressed in blocklevels
......................................................................


Render paragraphs when indent-pre is suppressed in blocklevels

Bug: 51262
Change-Id: Ibd04a36d5f8e4a0432bd6eb22942af61c239fa3f
---
M lib/dom.handlePres.js
M tests/parserTests-blacklist.js
M tests/parserTests.txt
3 files changed, 62 insertions(+), 34 deletions(-)

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



diff --git a/lib/dom.handlePres.js b/lib/dom.handlePres.js
index 9368e5b..998b7a1 100644
--- a/lib/dom.handlePres.js
+++ b/lib/dom.handlePres.js
@@ -3,6 +3,27 @@
 var DU = require('./mediawiki.DOMUtils.js').DOMUtils,
        Util = require('./mediawiki.Util.js').Util;
 
+function fixedIndentPreText(str, isLastChild) {
+       if (isLastChild) {
+               return str.replace(/\n(?!$)/g, "\n ");
+       } else {
+               return str.replace(/\n/g, "\n ");
+       }
+}
+
+function reinsertLeadingSpace(elt, isLastChild) {
+       var children = elt.childNodes;
+       for (var i = 0, n = children.length; i < n; i++) {
+               var c = children[i];
+               if (DU.isText(c)) {
+                       c.data = fixedIndentPreText(c.data, isLastChild && i 
=== n-1);
+               } else {
+                       // recurse
+                       reinsertLeadingSpace(c, isLastChild && i === n-1);
+               }
+       }
+}
+
 function handlePres(document, env) {
        /* --------------------------------------------------------------
         * Block tags change the behaviour of indent-pres.  This behaviour
@@ -17,37 +38,17 @@
         * Wherever such a block tag is found, any Parsoid-inserted
         * pre-tags are removed.
         * -------------------------------------------------------------- */
-       function deleteIndentPreFromDOM(node) {
-
-               function fixedIndentPreText(str, isLastChild) {
-                       if (isLastChild) {
-                               return str.replace(/\n(?!$)/g, "\n ");
-                       } else {
-                               return str.replace(/\n/g, "\n ");
-                       }
-               }
-
-               function reinsertLeadingSpace(elt, isLastChild) {
-                       var children = elt.childNodes;
-                       for (var i = 0, n = children.length; i < n; i++) {
-                               var c = children[i];
-                               if (DU.isText(c)) {
-                                       c.data = fixedIndentPreText(c.data, 
isLastChild && i === n-1);
-                               } else {
-                                       // recurse
-                                       reinsertLeadingSpace(c, isLastChild && 
i === n-1);
-                               }
-                       }
-               }
-
-               var c = node.firstChild;
+       function deleteIndentPreFromDOM(node, blocklevel) {
+               var c = node.firstChild, p, f;
                while (c) {
                        // get sibling before DOM is modified
                        var c_sibling = c.nextSibling;
 
                        if (DU.hasNodeName(c, "pre") && 
!DU.isLiteralHTMLNode(c)) {
+                               f = document.createDocumentFragment();
+
                                // space corresponding to the 'pre'
-                               node.insertBefore(document.createTextNode(' '), 
c);
+                               f.appendChild(document.createTextNode(' '));
 
                                // transfer children over
                                var c_child = c.firstChild;
@@ -61,14 +62,21 @@
                                                // sure every new line gets a 
space char added back.
                                                reinsertLeadingSpace(c_child, 
next === null);
                                        }
-                                       node.insertBefore(c_child, c);
+                                       f.appendChild(c_child);
                                        c_child = next;
                                }
 
+                               if (blocklevel) {
+                                       p = document.createElement('p');
+                                       p.appendChild(f);
+                                       f = p;
+                               }
+
+                               node.insertBefore(f, c);
                                // delete the pre
                                DU.deleteNode(c);
                        } else if 
(!Util.tagClosesBlockScope(c.nodeName.toLowerCase())) {
-                               deleteIndentPreFromDOM(c);
+                               deleteIndentPreFromDOM(c, blocklevel);
                        }
 
                        c = c_sibling;
@@ -76,7 +84,7 @@
        }
 
        function findAndHandlePres(doc, elt, indentPresHandled) {
-               var children = elt.childNodes, n;
+               var children = elt.childNodes, n, blocklevel = false;
                for (var i = 0; i < children.length; i++) {
                        var processed = false;
                        n = children[i];
@@ -84,7 +92,10 @@
                                if (DU.isElt(n)) {
                                        if 
(Util.tagOpensBlockScope(n.nodeName.toLowerCase())) {
                                                if 
(DU.isTplMetaType(n.getAttribute("typeof")) || DU.isLiteralHTMLNode(n)) {
-                                                       
deleteIndentPreFromDOM(n);
+                                                       // FIXME: Investigate 
PHP parser to see
+                                                       // where else this 
applies.
+                                                       blocklevel = n.nodeName 
=== "BLOCKQUOTE";
+                                                       
deleteIndentPreFromDOM(n, blocklevel);
                                                        processed = true;
                                                }
                                        } else if (n.getAttribute("typeof") === 
"mw:Extension/References") {
@@ -93,7 +104,7 @@
                                                // Verify and get rid of this 
special case.
                                                //
                                                // No pre-tags in references
-                                               deleteIndentPreFromDOM(n);
+                                               deleteIndentPreFromDOM(n, 
false);
                                                processed = true;
                                        }
                                }
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index 237a30c..3649312 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -44,7 +44,7 @@
 add("wt2html", "Bare pipe character from a template (bug 52363)", "<span 
about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"pipe\",\"href\":\"./Template:Pipe\"},\"params\":{},\"i\":0}}]}'
 data-parsoid='{\"dsr\":[0,8,null,null],\"pi\":[[]]}'></span>");
 add("wt2html", "Comment on its own line post-expand", "<p 
data-parsoid='{\"dsr\":[0,20,0,0]}'>a\n<span about=\"#mwt1\" 
typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"blank\",\"href\":\"./Template:Blank\"},\"params\":{},\"i\":0}}]}'
 data-parsoid='{\"dsr\":[2,11,null,null],\"pi\":[[]]}'></span><!---->\nb</p>");
 add("wt2html", "Comment on its own line post-expand with non-significant 
whitespace", "<p data-parsoid='{\"dsr\":[0,23,0,0]}'>a\n <span about=\"#mwt1\" 
typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"blank\",\"href\":\"./Template:Blank\"},\"params\":{},\"i\":0}}]}'
 data-parsoid='{\"dsr\":[3,12,null,null],\"pi\":[[]]}'></span> <!----> 
\nb</p>");
-add("wt2html", "Bug 52763: Preformatted in <blockquote>", "<blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[0,74,12,13]}'>\n Blah\n<table 
data-parsoid='{\"dsr\":[19,60,2,2]}'>\n<tbody 
data-parsoid='{\"dsr\":[22,58,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[22,57,0,0]}'><td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[22,57,1,0]}'>\n<pre 
data-parsoid='{\"dsr\":[24,57,1,0]}'>indented cell (no 
pre-wrapping!)</pre></td></tr>\n</tbody></table>\n</blockquote>");
+add("wt2html", "Bug 52763: Preformatted in <blockquote>", "<blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[0,74,12,13]}'>\n<p 
data-parsoid='{\"dsr\":[13,18,0,0]}'> Blah</p>\n<table 
data-parsoid='{\"dsr\":[19,60,2,2]}'>\n<tbody 
data-parsoid='{\"dsr\":[22,58,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[22,57,0,0]}'><td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[22,57,1,0]}'>\n<pre 
data-parsoid='{\"dsr\":[24,57,1,0]}'>indented cell (no 
pre-wrapping!)</pre></td></tr>\n</tbody></table>\n</blockquote>");
 add("wt2html", "Templates: Indent-Pre: 1a. Templates that break a line should 
suppress <pre>", " <span about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"\"}},\"i\":0}}]}'
 
data-parsoid='{\"dsr\":[1,10,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'></span>");
 add("wt2html", "Templates: Indent-Pre: 1b. Templates that break a line should 
suppress <pre>", " <span about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"\\nfoo\"}},\"i\":0}}]}'
 
data-parsoid='{\"dsr\":[1,14,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>\n</span><p
 about=\"#mwt1\" data-parsoid='{\"dsr\":[null,14,0,0]}'>foo</p>");
 add("wt2html", "Templates: Indent-Pre: 1e. Wrapping should be based on 
expanded content", "<pre about=\"#mwt1\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"
 foo\"}},\"i\":0}}]}' 
data-parsoid='{\"dsr\":[0,13,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>foo</pre>\n\n<pre
 about=\"#mwt2\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"
 
foo\"}},\"i\":0}},{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"
 bar\"}},\"i\":1}}]}' 
data-parsoid='{\"dsr\":[15,41,1,0],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}],[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>foo<span
 data-parsoid='{\"dsr\":[28,41,null,null],\"src\":\"{{echo| bar}}\"}'> 
bar</span></pre>\n\n<pre about=\"#mwt4\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"
 
foo\"}},\"i\":0}},\"\\n\",{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"
 bar\"}},\"i\":1}}]}' 
data-parsoid='{\"dsr\":[43,70,1,0],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}],[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>foo\n<span
 data-parsoid='{\"dsr\":[57,70,null,null],\"src\":\"{{echo| 
bar}}\"}'>bar</span></pre>\n\n<span about=\"#mwt6\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&lt;!--cmt-->
 foo\"}},\"i\":0}}]}' 
data-parsoid='{\"dsr\":[72,95,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'><!--cmt--></span><pre
 about=\"#mwt6\" 
data-parsoid='{\"dsr\":[null,95,1,0]}'>foo</pre>\n\n<!--cmt--><pre 
about=\"#mwt7\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"
 foo\"}},\"i\":0}}]}' 
data-parsoid='{\"dsr\":[107,120,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>foo</pre>\n\n<pre
 about=\"#mwt8\" typeof=\"mw:Transclusion\" 
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"{{echo|
 }}bar\"}},\"i\":0}}]}' 
data-parsoid='{\"dsr\":[122,144,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>bar</pre>");
@@ -54,7 +54,6 @@
 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", "3b. Indent-Pre and block tags (pre-content on separate line)", 
"<p data-parsoid='{\"stx\":\"html\",\"dsr\":[0,13,3,4]}'>\n foo\n</p>\n\n<div 
data-parsoid='{\"stx\":\"html\",\"dsr\":[15,32,5,6]}'>\n<pre 
data-parsoid='{\"dsr\":[21,25,1,0]}'>foo</pre>\n</div>\n\n<center 
data-parsoid='{\"stx\":\"html\",\"dsr\":[34,57,8,9]}'>\n<pre 
data-parsoid='{\"dsr\":[43,47,1,0]}'>foo</pre>\n</center>\n\n<blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[59,90,12,13]}'>\n 
foo\n</blockquote>\n\n<blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[92,135,12,13]}'>\n<pre 
data-parsoid='{\"stx\":\"html\",\"strippedNL\":\"\\n\",\"dsr\":[105,121,6,6]}'>\nfoo\n</pre>\n</blockquote>\n\n<table
 data-parsoid='{\"stx\":\"html\",\"dsr\":[137,176,7,8]}'><tbody 
data-parsoid='{\"dsr\":[144,168,0,0]}'><tr 
data-parsoid='{\"stx\":\"html\",\"dsr\":[144,168,4,5]}'><td 
data-parsoid='{\"stx\":\"html\",\"dsr\":[148,163,4,5]}'>\n<pre 
data-parsoid='{\"dsr\":[153,157,1,0]}'>foo</pre>\n</td></tr></tbody></table>\n\n<ul
 data-parsoid='{\"stx\":\"html\",\"dsr\":[178,203,4,5]}'><li 
data-parsoid='{\"stx\":\"html\",\"dsr\":[182,198,4,5]}'>\n  foo\n</li></ul>\n");
 add("wt2html", "4. Multiple spaces at start-of-line", "    <p 
data-parsoid='{\"stx\":\"html\",\"dsr\":[4,16,3,4]}'> foo </p>\n<pre 
data-parsoid='{\"dsr\":[17,24,1,0]}'>   foo</pre>\n\t<table 
data-parsoid='{\"dsr\":[26,36,2,2]}'>\n<tbody 
data-parsoid='{\"dsr\":[29,34,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[29,33,0,0]}'><td
 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[29,33,1,0]}'>foo</td></tr>\n</tbody></table>");
 add("wt2html", "6. Pre-blocks should extend across lines with leading WS even 
when there is no wrappable content", "<pre 
data-parsoid='{\"dsr\":[0,26,1,0]}'>a\n\n <!-- continue -->\nb</pre>\n\n<pre 
data-parsoid='{\"dsr\":[28,30,1,0]}'>c</pre>\n \n<p 
data-parsoid='{\"dsr\":[33,34,0,0]}'>d</p>");
 add("wt2html", "Definition Lists: Nesting: Multi-level (Parsoid only)", "<dl 
data-parsoid='{\"dsr\":[0,29,0,0]}'><dt 
data-parsoid='{\"dsr\":[0,4,1,0]}'>t1<span typeof=\"mw:Placeholder\" 
data-parsoid='{\"src\":\" \",\"isDisplayHack\":true,\"dsr\":[3,4,null,0]}'> 
</span></dt><dd data-parsoid='{\"stx\":\"row\",\"dsr\":[4,7,1,0]}'>d1</dd>\n<dt 
data-parsoid='{\"dsr\":[8,29,1,0]}'><dl data-parsoid='{\"dsr\":[9,29,0,0]}'><dt 
data-parsoid='{\"dsr\":[9,13,1,0]}'>t2<span typeof=\"mw:Placeholder\" 
data-parsoid='{\"src\":\" \",\"isDisplayHack\":true,\"dsr\":[12,13,null,0]}'> 
</span></dt><dd 
data-parsoid='{\"stx\":\"row\",\"dsr\":[13,17,1,0]}'>:d2</dd>\n<dt 
data-parsoid='{\"dsr\":[18,29,2,0]}'><dl 
data-parsoid='{\"dsr\":[20,29,0,0]}'><dt 
data-parsoid='{\"dsr\":[20,24,1,0]}'>t3<span typeof=\"mw:Placeholder\" 
data-parsoid='{\"src\":\" \",\"isDisplayHack\":true,\"dsr\":[23,24,null,0]}'> 
</span></dt><dd 
data-parsoid='{\"stx\":\"row\",\"dsr\":[24,29,1,0]}'>::d3</dd></dl></dt></dl></dt></dl>");
@@ -714,7 +713,7 @@
 add("html2html", "nowiki 3", "\n<dl data-parsoid='{\"dsr\":[1,42,0,0]}'><dd 
data-parsoid='{\"dsr\":[1,23,1,0]}'> There is not nowiki.</dd>\n<dd 
data-parsoid='{\"dsr\":[24,42,1,0]}'> There is nowiki.</dd></dl>\n\n<ol 
data-parsoid='{\"dsr\":[44,85,0,0]}'><li data-parsoid='{\"dsr\":[44,66,1,0]}'> 
There is not nowiki.</li>\n<li data-parsoid='{\"dsr\":[67,85,1,0]}'> There is 
nowiki.</li></ol>\n\n<ul data-parsoid='{\"dsr\":[87,128,0,0]}'><li 
data-parsoid='{\"dsr\":[87,109,1,0]}'> There is not nowiki.</li>\n<li 
data-parsoid='{\"dsr\":[110,128,1,0]}'> There is nowiki.</li></ul>\n");
 add("html2html", "Preformatted text", "<pre 
data-parsoid='{\"dsr\":[0,125,1,0]}'>This is some\nPreformatted text\nWith <i 
data-parsoid='{\"dsr\":[39,49,2,2]}'>italic</i>\nAnd <b 
data-parsoid='{\"dsr\":[55,65,3,3]}'>bold</b>\nAnd a &lt;a 
href=\"/wiki/Main_Page\" title=\"Main Page\">link&lt;/a></pre>\n");
 add("html2html", "<pre> with <nowiki> inside (compatibility with 1.6 and 
earlier)", "<pre data-parsoid='{\"dsr\":[0,35,1,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[1,35,8,9]}'>&lt;b>\n &lt;cite>\n 
&lt;em></span></pre>\n");
-add("html2html", "Bug 52763: Preformatted in <blockquote>", "<blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[0,77,12,13]}'>\n Blah\n\n<table 
data-parsoid='{\"dsr\":[20,63,2,2]}'>\n\n<tbody 
data-parsoid='{\"dsr\":[24,61,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[24,59,0,0]}'><td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[24,59,1,0]}'>\n<pre 
data-parsoid='{\"dsr\":[26,59,1,0]}'>indented cell (no 
pre-wrapping!)</pre></td></tr>\n\n</tbody></table>\n</blockquote>\n");
+add("html2html", "Bug 52763: Preformatted in <blockquote>", "<blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[0,77,12,13]}'>\n<p 
data-parsoid='{\"dsr\":[13,18,0,0]}'> Blah</p>\n\n<table 
data-parsoid='{\"dsr\":[20,63,2,2]}'>\n\n<tbody 
data-parsoid='{\"dsr\":[24,61,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[24,59,0,0]}'><td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[24,59,1,0]}'>\n<pre 
data-parsoid='{\"dsr\":[26,59,1,0]}'>indented cell (no 
pre-wrapping!)</pre></td></tr>\n\n</tbody></table>\n</blockquote>\n");
 add("html2html", "<pre> with attributes (bug 3202)", "<pre 
data-parsoid='{\"dsr\":[0,24,1,0]}'>Bluescreen of WikiDeath</pre>\n");
 add("html2html", "<pre> with width attribute (bug 3202)", "<pre 
data-parsoid='{\"dsr\":[0,22,1,0]}'>Narrow screen goodies</pre>\n");
 add("html2html", "<pre> with forbidden attribute (bug 3202)", "<pre 
data-parsoid='{\"dsr\":[0,22,1,0]}'>Narrow screen goodies</pre>\n");
@@ -722,7 +721,7 @@
 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 
foo\n\n</blockquote>\n<blockquote 
data-parsoid='{\"stx\":\"html\",\"dsr\":[101,133,12,13]}'>\n 
foo\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", "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", "4. Multiple spaces at start-of-line", "<p 
data-parsoid='{\"dsr\":[0,22,0,0]}'><span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[0,18,8,9]}'> </span>foo </p>\n<pre 
data-parsoid='{\"dsr\":[23,30,1,0]}'>   foo</pre>\n\n<table 
data-parsoid='{\"dsr\":[32,43,2,2]}'>\n\n<tbody 
data-parsoid='{\"dsr\":[36,41,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[36,40,0,0]}'><td
 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[36,40,1,0]}'>foo</td></tr>\n</tbody></table>\n");
 add("html2html", "HTML-pre: 1. embedded newlines", "<pre 
data-parsoid='{\"dsr\":[0,4,1,0]}'>foo</pre>\n\n<pre 
data-parsoid='{\"dsr\":[6,10,1,0]}'>foo</pre>\n\n <p 
data-parsoid='{\"dsr\":[13,13,0,0]}'><br 
data-parsoid='{\"dsr\":[13,13,0,0]}'/></p>\n<pre 
data-parsoid='{\"dsr\":[14,18,1,0]}'>foo</pre>\n\n <p 
data-parsoid='{\"dsr\":[21,21,0,0]}'><br 
data-parsoid='{\"dsr\":[21,21,0,0]}'/></p>\n \n<pre 
data-parsoid='{\"dsr\":[24,28,1,0]}'>foo</pre>\n");
 add("html2html", "HTML-pre: 3: other wikitext", "<pre 
data-parsoid='{\"dsr\":[0,71,1,0]}'>* foo\n<span typeof=\"mw:Nowiki\" 
data-parsoid='{\"dsr\":[8,71,8,9]}'># bar\n = no-h =\n '' no-italic ''\n [[ 
NoLink ]]</span></pre>\n");
@@ -1302,6 +1301,7 @@
 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", "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");
 add("html2wt", "6. Pre-blocks should extend across lines with leading WS even 
when there is no wrappable content", " a\n \n b\n\n c\n \n\nd\n");
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 6d02be9..c9003db 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -2232,6 +2232,23 @@
 !!end
 
 !!test
+Render paragraphs when indent-pre is suppressed in blocklevels
+!!input
+<blockquote>
+ foo
+
+ bar
+</blockquote>
+!! result
+<blockquote>
+<p> foo
+</p><p> bar
+</p>
+</blockquote>
+
+!!end
+
+!!test
 4. Multiple spaces at start-of-line
 !!input
     <p> foo </p>

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ibd04a36d5f8e4a0432bd6eb22942af61c239fa3f
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: GWicke <gwi...@wikimedia.org>
Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to