Arlolra has uploaded a new change for review.
https://gerrit.wikimedia.org/r/110651
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, 58 insertions(+), 33 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/51/110651/1
diff --git a/lib/dom.handlePres.js b/lib/dom.handlePres.js
index 9368e5b..f3cc7e9 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,35 +38,15 @@
* 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);
@@ -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,8 @@
if (DU.isElt(n)) {
if
(Util.tagOpensBlockScope(n.nodeName.toLowerCase())) {
if
(DU.isTplMetaType(n.getAttribute("typeof")) || DU.isLiteralHTMLNode(n)) {
-
deleteIndentPreFromDOM(n);
+ blocklevel = n.nodeName
=== "BLOCKQUOTE";
+
deleteIndentPreFromDOM(n, blocklevel);
processed = true;
}
} else if (n.getAttribute("typeof") ===
"mw:Extension/References") {
@@ -93,7 +102,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..ebc06d7 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\":[14,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\":\"<!--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,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", "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", "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 <p
data-parsoid='{\"dsr\":[73,76,0,0]}'>foo</p>\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 +714,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 <a
href=\"/wiki/Main_Page\" title=\"Main Page\">link</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]}'><b>\n <cite>\n
<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\":[14,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 +722,7 @@
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
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\":[82,85,0,0]}'>foo</p>\n\n</blockquote>\n<blockquote
data-parsoid='{\"stx\":\"html\",\"dsr\":[101,133,12,13]}'>\n <p
data-parsoid='{\"dsr\":[115,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");
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 6d02be9..97485c4 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -2232,6 +2232,22 @@
!!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: newchange
Gerrit-Change-Id: Ibd04a36d5f8e4a0432bd6eb22942af61c239fa3f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits