Arlolra has uploaded a new change for review.
https://gerrit.wikimedia.org/r/227481
Change subject: Remove smart nowikier
......................................................................
Remove smart nowikier
* Nowikis are expected to be rare and the original use case (which
might have been valid back in the day) of trying to reduce the
number of nowiki wrappers is no longer relevant.
* A bit of noise in parserTests. The one new html2html failure is for a
test that fails html2wt.
Change-Id: I7aa00ee0020c5f69c3acb1cab069ceab77b75ab4
---
M lib/wts.escapeWikitext.js
M tests/parserTests-blacklist.js
M tests/parserTests.txt
3 files changed, 146 insertions(+), 114 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/81/227481/1
diff --git a/lib/wts.escapeWikitext.js b/lib/wts.escapeWikitext.js
index b6d73c7..7c09872 100644
--- a/lib/wts.escapeWikitext.js
+++ b/lib/wts.escapeWikitext.js
@@ -379,8 +379,9 @@
/* ----------------------------------------------------------------
* This function attempts to wrap smallest escapable units into
* nowikis (which can potentially add multiple nowiki pairs in a
- * single string). However, it does attempt to coalesce adjacent
- * nowiki segments into a single nowiki wrapper.
+ * single string). The idea here is that since this should all be
+ * text, anything that tokenizes to another construct needs to be
+ * wrapped.
*
* Full-wrapping is enabled in the following cases:
* - origText has url triggers (RFC, ISBN, etc.)
@@ -391,15 +392,13 @@
var match =
origText.match(/^((?:.*?|[\r\n]+[^\r\n]|[~]{3,5})*?)((?:\r?\n)*)$/);
var text = match[1];
var nls = match[2];
- var nowikisAdded = false;
-
- // console.warn("SOL: " + sol + "; text: " + text);
if (fullWrap) {
return "<nowiki>" + text + "</nowiki>" + nls;
} else {
var buf = '';
var inNowiki = false;
+ var nowikisAdded = false;
var tokensWithoutClosingTag = new Set([
// These token types don't come with a closing
tag
'listItem', 'td', 'tr'
@@ -414,40 +413,28 @@
var tokens = this.tokenizeStr(text, sol);
tokens.pop();
- // Add nowikis intelligently
- var smartNowikier = function(open, close, str, i,
numToks) {
- // Max length of string that gets
"unnecessarily"
- // sucked into a nowiki (40 is an arbitrary
number)
- var maxExcessWrapLength = 40;
-
+ var nowikiWrap = function(str, open, close) {
// If we are being asked to close a nowiki
- // without opening one, we open a nowiki.
+ // without an opening one, we open it first.
//
// Ex: "</s>" will parse to an end-tag
if (open || (close && !inNowiki)) {
if (!inNowiki) {
- buf += "<nowiki>";
+ buf += '<nowiki>';
inNowiki = true;
nowikisAdded = true;
}
}
-
buf += str;
-
if (close) {
- if ((i < numToks - 1 && tokens[i +
1].constructor === String && tokens[i + 1].length >= maxExcessWrapLength) ||
- (i === numToks - 2 && tokens[i
+ 1].constructor === String)) {
- buf += "</nowiki>";
- inNowiki = false;
- }
+ buf += '</nowiki>';
+ inNowiki = false;
}
};
for (var i = 0, n = tokens.length; i < n; i++) {
var t = tokens[i];
var tsr = (t.dataAttribs || {}).tsr;
-
- // console.warn("SOL: " + sol + "; T[" + i +
"]=" + JSON.stringify(t));
// Ignore display hacks, so text like "A : B"
doesn't produce
// an unnecessary nowiki.
@@ -459,22 +446,17 @@
case String:
if (t.length > 0) {
t = escapeNowikiTags(t);
- if ((sol && t.match(/^ /)) ||
t.match(/\n /)) {
- if (inNowiki) {
-
smartNowikier(true, true, t, i, n);
- } else {
- var x =
t.split(/(^|\n) /g);
- buf += x[0];
- for (var k = 1;
k < x.length - 1; k += 2) {
- buf +=
x[k];
- if (k
!== 1 || x[k] === '\n' || sol) {
-
buf += '<nowiki> </nowiki>';
- } else {
-
buf += ' ';
- }
- buf +=
x[k + 1];
+ if (!inNowiki && ((sol &&
t.match(/^ /)) || t.match(/\n /))) {
+ var x = t.split(/(^|\n)
/g);
+ buf += x[0];
+ for (var k = 1; k <
x.length - 1; k += 2) {
+ buf += x[k];
+ if (k !== 1 ||
x[k] === '\n' || sol) {
+
nowikiWrap(' ', true, true);
+ } else {
+ buf +=
' ';
}
- nowikisAdded =
true;
+ buf += x[k + 1];
}
} else {
buf += t;
@@ -496,20 +478,20 @@
case pd.TagTk:
// Treat tokens with missing tags as
self-closing tokens
// for the purpose of minimal nowiki
escaping
- var closeNowiki =
tokensWithoutClosingTag.has(t.name);
- smartNowikier(true, closeNowiki,
text.substring(tsr[0], tsr[1]), i, n);
+ var close =
tokensWithoutClosingTag.has(t.name);
+ nowikiWrap(text.substring(tsr[0],
tsr[1]), true, close);
sol = false;
break;
case pd.EndTagTk:
- smartNowikier(false, true,
text.substring(tsr[0], tsr[1]), i, n);
+ nowikiWrap(text.substring(tsr[0],
tsr[1]), false, true);
sol = false;
break;
case pd.SelfclosingTagTk:
if (t.name !== 'meta' ||
!/^mw:(TSRMarker|EmptyLine)$/.test(t.getAttribute('typeof'))) {
// Don't bother with marker or
empty-line metas
- smartNowikier(true, true,
text.substring(tsr[0], tsr[1]), i, n);
+
nowikiWrap(text.substring(tsr[0], tsr[1]), true, true);
}
sol = false;
break;
@@ -518,16 +500,14 @@
// close any unclosed nowikis
if (inNowiki) {
- buf += "</nowiki>";
+ buf += '</nowiki>';
}
// Make sure nowiki is always added
// Ex: "foo]]" won't tokenize into tags at all
if (!nowikisAdded) {
buf = '';
- buf += "<nowiki>";
- buf += text;
- buf += "</nowiki>";
+ nowikiWrap(text, true, true);
}
buf += nls;
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index e6c48b3..493087c 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -318,10 +318,6 @@
add("wt2html", "Language parser function", "<p about=\"#mwt1\"
typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,16,0,0],\"pi\":[[]]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#language:ar\",\"function\":\"#language\"},\"params\":{},\"i\":0}}]}'>ar</p>");
add("wt2html", "Special parser function", "<p
data-parsoid='{\"dsr\":[0,65,0,0]}'><span about=\"#mwt1\"
typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[]],\"dsr\":[0,23,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#special:RandomPage\",\"function\":\"#special\"},\"params\":{},\"i\":0}}]}'>Parser
function implementation for pf_#special missing in Parsoid.</span>\n<span
about=\"#mwt2\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[]],\"dsr\":[24,45,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#special:BaDtItLe\",\"function\":\"#special\"},\"params\":{},\"i\":0}}]}'>Parser
function implementation for pf_#special missing in Parsoid.</span>\n<span
about=\"#mwt3\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[]],\"dsr\":[46,65,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#special:Foobar\",\"function\":\"#special\"},\"params\":{},\"i\":0}}]}'>Parser
function implementation for pf_#special missing in Parsoid.</span></p>");
add("wt2html", "1. SOL-sensitive wikitext tokens as template-args", "<p
data-parsoid='{\"dsr\":[0,35,0,0]}'><span about=\"#mwt1\"
typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[0,11,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"*a\"}},\"i\":0}}]}'>*a</span>\n<span
about=\"#mwt2\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[12,23,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"#a\"}},\"i\":0}}]}'>#a</span>\n<span
about=\"#mwt3\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[24,35,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\":a\"}},\"i\":0}}]}'>:a</span></p>");
-add("wt2html", "Headings: 6a. Heading chars in SOL context (with trailing
spaces)", "<p data-parsoid='{\"dsr\":[0,20,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,20,8,9]}'>=a=</span></p>\n\n<p
data-parsoid='{\"dsr\":[22,42,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[22,42,8,9]}'>=a=</span></p> \n\n<p
data-parsoid='{\"dsr\":[45,65,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[45,65,8,9]}'>=a=</span></p>\t\n\n<p
data-parsoid='{\"dsr\":[68,88,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[68,88,8,9]}'>=a=</span></p> \t");
-add("wt2html", "Headings: 6b. Heading chars in SOL context (with trailing
newlines)", "<p data-parsoid='{\"dsr\":[0,22,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,22,8,9]}'>=a=\nb</span></p>\n\n<p
data-parsoid='{\"dsr\":[24,47,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[24,47,8,9]}'>=a= \nb</span></p>\n\n<p
data-parsoid='{\"dsr\":[49,72,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[49,72,8,9]}'>=a=\t\nb</span></p>\n\n<p
data-parsoid='{\"dsr\":[74,98,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[74,98,8,9]}'>=a=\t \nb</span></p>");
-add("wt2html", "Headings: 6c. Heading chars in SOL context (leading newline
break)", "<p data-parsoid='{\"dsr\":[0,22,0,0]}'>a\n<span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[2,22,8,9]}'>=b=</span></p>");
-add("wt2html", "Headings: 6d. Heading chars in SOL context (with interspersed
comments)", "<!--c0--><p data-parsoid='{\"dsr\":[9,29,0,0]}'><span
typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[9,29,8,9]}'>=a=</span></p>\n\n<!--c1--><p
data-parsoid='{\"dsr\":[40,60,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[40,60,8,9]}'>=a=</span></p> <!--c2-->\t <!--c3-->");
add("wt2html", "Links 3. WikiLinks: No escapes needed", "<p
data-parsoid='{\"dsr\":[0,31,0,0]}'>[[Foo|[Foobar]]\n<a rel=\"mw:WikiLink\"
href=\"./Foo\" title=\"Foo\"
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[16,31,6,2]}'>foo|bar</a></p>");
add("wt2html", "1. Leading whitespace in SOL context should be escaped", "<p
data-parsoid='{\"dsr\":[0,19,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,18,8,9]}'> </span>a</p>\n\n<p
data-parsoid='{\"dsr\":[21,41,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[21,39,8,9]}'> </span> a</p>\n\n<p
data-parsoid='{\"dsr\":[43,67,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[43,61,8,9]}'>\t</span>a(tab)</p>\n\n<p
data-parsoid='{\"dsr\":[69,121,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[69,87,8,9]}'> </span>\ta\n<!--cmt-->\n<span
typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[101,119,8,9]}'> </span>
a</p>\n\n<p data-parsoid='{\"dsr\":[123,144,0,0]}'>a\n<span
typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[125,143,8,9]}'> </span>b</p>\n\n<p
data-parsoid='{\"dsr\":[146,167,0,0]}'>a\n<span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[148,166,8,9]}'>\t</span>b</p>\n\n<p
data-parsoid='{\"dsr\":[169,191,0,0]}'>a\n<span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[171,189,8,9]}'>\t</span> b</p>");
add("wt2html", "1. a tags", "<p data-parsoid='{\"dsr\":[0,38,0,0]}'><a
href=\"http://google.com\">google</a></p>");
@@ -385,7 +381,7 @@
add("wt2wt", "Templates: HTML Tables: 5. Proper fostering of categories from
inside", "[[Category:foo1]]<table><tr><td>foo</td></tr></table>\n<!--Two
categories (Bug
50330)-->\n[[Category:bar1]][[Category:bar2]]<table><tr><td>foo</td></tr></table>");
add("wt2wt", "Allow empty links in image captions (Bug 60753)",
"[[File:Foobar.jpg|thumb|Caption
[[Link1]]\n<nowiki>[[]]</nowiki>\n[[Link2]]\n]]");
add("wt2wt", "Image with multiple widths -- use last",
"[[File:Foobar.jpg|300px|caption]]\n");
-add("wt2wt", "Render invalid page names as plain text (bug 51090)",
"<nowiki>[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]</nowiki>\n\n[[{{echo|./../foo}}|bar]]\n[[{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}|bar]]\n[[{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}]]\n[[{{echo|foo<bar}}]]\n");
+add("wt2wt", "Render invalid page names as plain text (bug 51090)",
"<nowiki>[[./../foo|bar]]</nowiki>\n<nowiki>[[foo�|bar]]</nowiki>\n<nowiki>[[foo/.|bar]]</nowiki>\n<nowiki>[[foo/..|bar]]</nowiki>\n<nowiki>[[foo~~~bar]]</nowiki>\n<nowiki>[[foo>bar]]</nowiki>\n[[foo[bar]]\n<nowiki>[[.]]</nowiki>\n<nowiki>[[..]]</nowiki>\n<nowiki>[[foo././bar]]</nowiki>\n\n[[{{echo|./../foo}}|bar]]\n[[{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}|bar]]\n[[{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}]]\n[[{{echo|foo<bar}}]]\n");
add("wt2wt", "Handling of sections up to level 6 and beyond", "= Level 1
Heading=\n== Level 2 Heading==\n=== Level 3 Heading===\n==== Level 4
Heading====\n===== Level 5 Heading=====\n====== Level 6
Heading======\n======<nowiki>= Level 7
Heading=</nowiki>======\n======<nowiki>== Level 8
Heading==</nowiki>======\n======<nowiki>=== Level 9
Heading===</nowiki>======\n======<nowiki>==== Level 10
Heading====</nowiki>======\n");
add("wt2wt", "div with single-quoted attribute", "<div id=\"rock\">HTML
rocks</div>");
add("wt2wt", "div with unquoted attribute", "<div id=\"rock\">HTML
rocks</div>");
@@ -406,7 +402,7 @@
add("wt2wt", "Opera -o-link CSS", "<div
title=\"data:text/html,<img src=1 onerror=alert(1)>\"
style=\"-o-link:attr(title);-o-link-source:current\">X</div>");
add("wt2wt", "Table attribute legitimate extension", "{|\n!
style=\"<nowiki>color:blue</nowiki>\" + | status\n|}");
add("wt2wt", "Table attribute safety", "{|\n!
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\" +
| status\n|}");
-add("wt2wt", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata", "<div itemscope=\"\">\n\t<nowiki><meta itemprop=\"hello\"
content=\"world\">\n\t<meta http-equiv=\"refresh\" content=\"5\">\n\t<meta
itemprop=\"hello\" http-equiv=\"refresh\" content=\"5\">\n\t<link
itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\" itemprop=\"hello\"
href=\"{{SERVER}}\"></nowiki>\n</div>");
+add("wt2wt", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata", "<div itemscope=\"\">\n\t<nowiki><meta itemprop=\"hello\"
content=\"world\"></nowiki>\n\t<nowiki><meta http-equiv=\"refresh\"
content=\"5\"></nowiki>\n\t<nowiki><meta itemprop=\"hello\"
http-equiv=\"refresh\" content=\"5\"></nowiki>\n\t<nowiki><link
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link
rel=\"stylesheet\" href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link
rel=\"stylesheet\" itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n</div>");
add("wt2wt", "Fuzz testing: Parser13", "{| \n| http://a|\n|}");
add("wt2wt", "Fuzz testing: Parser14-table", "==a==\n{|
style=\"__TOC__\"\n|}");
add("wt2wt", "Fuzz testing: Parser16", "{|\n!https://||||||\n|}");
@@ -445,7 +441,7 @@
add("wt2wt", "Trailing newlines in a deep dom-subtree that ends a wikitext
line should be migrated out",
"{|\n|<small>foo\n\nbar\n|}\n\n{|\n|<small>foo<small>\n|}");
add("wt2wt", "Empty TD followed by TD with tpl-generated attribute",
"{|\n|-\n|\n| {{echo|style='color:red'}} |foo\n|}");
add("wt2wt", "Improperly nested inline or quotes tags with whitespace in
between", "<span> <s>x</span> </s>\n''' ''x'''''<nowiki/>'' ''\n");
-add("wt2wt", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)",
"<nowiki> </nowiki><nowiki>|| ||</nowiki>\n<table>\n<tr><td> a\n</table>");
+add("wt2wt", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)",
"<nowiki> </nowiki><nowiki>||</nowiki> <nowiki>||</nowiki>\n<table>\n<tr><td>
a\n</table>");
add("wt2wt", "Table in fosterable position", "{{OpenTable}}\n<div>\n{|\n|}\n");
add("wt2wt", "Image: upright option is ignored on inline and frame images
(parsoid)", "[[File:Foobar.jpg|500x500px|caption]]\n");
@@ -464,11 +460,11 @@
add("html2html", "<pre> with forbidden attribute (bug 3202)", "<pre
data-parsoid='{\"dsr\":[0,22,1,0]}'>Narrow screen goodies</pre>\n");
add("html2html", "<pre> with forbidden attribute values (bug 3202)", "<pre
data-parsoid='{\"dsr\":[0,22,1,0]}'>Narrow screen goodies</pre>\n");
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", "<nowiki> and <pre> preference (first one wins)", "<pre
data-parsoid='{\"stx\":\"html\",\"strippedNL\":true,\"dsr\":[0,21,5,6]}'><nowiki>\n</pre>\n<p
data-parsoid='{\"dsr\":[22,38,0,0]}'><span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"</nowiki>\",\"dsr\":[22,31,null,0]}'></nowiki></span>\n</pre></p>\n\n<p
data-parsoid='{\"dsr\":[40,93,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[40,86,8,9]}'>\n<pre>\n<span typeof=\"mw:Entity\"
data-parsoid='{\"src\":\"&lt;\",\"srcContent\":\"<\",\"dsr\":[55,59,null,null]}'><</span>nowiki<span
typeof=\"mw:Entity\"
data-parsoid='{\"src\":\"&gt;\",\"srcContent\":\">\",\"dsr\":[65,69,null,null]}'>></span>\n</pre>\n</span>\n</pre></p>\n");
add("html2html", "Templates: Other wikitext in parameter names (bug 67657)",
"<p about=\"#mwt1\" typeof=\"mw:Transclusion\"
data-parsoid='{\"dsr\":[0,20,0,0],\"pi\":[[{\"k\":\"''1''\",\"named\":true}]]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"''1''\":{\"wt\":\"foo\"}},\"i\":0}}]}'>foo</p>");
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,1,0,0]}'>a</p>\n\n<ul
data-parsoid='{\"dsr\":[3,220,0,0]}'><li
data-parsoid='{\"dsr\":[3,220,1,0]}'><div style=\"width: 155px\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[4,220,26,6]}'> <div class=\"thumb\"
style=\"width: 150px;\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[31,181,41,6]}'> <div
style=\"margin:68px auto;\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[73,174,31,6]}'><img
src=\"http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg\"
alt=\"120px-Foobar.jpg\" rel=\"mw:externalImage\"
data-parsoid='{\"dsr\":[104,168,null,null]}'/></div> </div> <div
class=\"gallerytext\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[182,213,25,6]}'></div>
</div></li></ul>\n");
add("html2html", "5a. White-space in indent-pre", "<pre
data-parsoid='{\"dsr\":[0,13,1,0]}'>a<br
data-parsoid='{\"stx\":\"html\",\"noClose\":true,\"dsr\":[2,8,4,null]}'/>\n\n\nb</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");
add("html2html", "Definition list with wikilink containing colon", "<dl
data-parsoid='{\"dsr\":[0,95,0,0]}'><dt data-parsoid='{\"dsr\":[0,24,1,0]}'>
[/index.php?title=Help</dt><dd
data-parsoid='{\"stx\":\"row\",\"dsr\":[24,60,1,0]}'>FAQ&action=edit&redlink=1
Help:FAQ]</dd>\n<dd data-parsoid='{\"dsr\":[61,95,1,0]}'> The least-read page
on Wikipedia</dd></dl>\n");
add("html2html", "Definition lists: colon in HTML attribute", "<dl
data-parsoid='{\"dsr\":[0,12,0,0]}'><dt data-parsoid='{\"dsr\":[0,12,1,0]}'> <b
data-parsoid='{\"dsr\":[2,12,3,3]}'>bold</b></dt></dl>\n");
add("html2html", "Definition Lists: Nesting: Multi-level (Parsoid only)",
"\n<dl data-parsoid='{\"dsr\":[1,116,0,0]}'><dt
data-parsoid='{\"dsr\":[1,6,1,0]}'> t1 </dt>\n<dd
data-parsoid='{\"dsr\":[7,17,1,0]}'> d1 </dd>\n<dt
data-parsoid='{\"dsr\":[18,116,1,0]}'><dl
data-parsoid='{\"dsr\":[19,116,0,0]}'><dt data-parsoid='{\"dsr\":[19,24,1,0]}'>
t2 </dt>\n<dd data-parsoid='{\"dsr\":[25,62,2,0]}'> <span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[28,48,8,9]}'>:d2</span> </dd>\n<dt
data-parsoid='{\"dsr\":[63,116,2,0]}'><dl
data-parsoid='{\"dsr\":[65,116,0,0]}'><dt data-parsoid='{\"dsr\":[65,70,1,0]}'>
t3 </dt>\n<dd data-parsoid='{\"dsr\":[71,116,3,0]}'> <span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[75,96,8,9]}'>::d3</span>
</dd></dl></dt></dl></dt></dl>\n");
@@ -564,7 +560,7 @@
add("html2html", "Image: caption containing a table", "<figure
typeof=\"mw:Image/Thumb\"
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"width\",\"ak\":\"200x200px\"},{\"ck\":\"bogus\",\"ak\":\"This
is an example image thumbnail caption with a
table\\n{\"},{\"ck\":\"bogus\",\"ak\":\"\\n\\n!Foo
!Bar\\n\"},{\"ck\":\"bogus\",\"ak\":\"-\\n\"},{\"ck\":\"bogus\",\"ak\":\"Foo1
\\n\"},{\"ck\":\"bogus\",\"ak\":\"Bar1\"},{\"ck\":\"caption\",\"ak\":\"}\\nand
some more text.\"}],\"dsr\":[0,143,2,2]}'><a href=\"./File:Foobar.jpg\"
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"sa\":{},\"dsr\":[2,null,null,null]}'><img
resource=\"./File:Foobar.jpg\"
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg\"
data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\"
height=\"23\" width=\"200\"
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"23\",\"width\":\"200\"},\"sa\":{\"resource\":\"File:Foobar.jpg\"}}'/></a><figcaption
data-parsoid='{\"dsr\":[null,141,null,null]}'>}\nand some more
text.</figcaption></figure>\n");
add("html2html", "Subpage link", "<p data-parsoid='{\"dsr\":[0,38,0,0]}'><a
rel=\"mw:WikiLink\" href=\"./Wiki/Subpage_test/subpage\" title=\"Wiki/Subpage
test/subpage\"
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Subpage_test/subpage\"},\"sa\":{\"href\":\"wiki/Subpage
test/subpage\"},\"dsr\":[0,38,28,2]}'>/subpage</a></p>\n");
add("html2html", "Subpage noslash link", "<p
data-parsoid='{\"dsr\":[0,37,0,0]}'><a rel=\"mw:WikiLink\"
href=\"./Wiki/Subpage_test/subpage\" title=\"Wiki/Subpage test/subpage\"
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Subpage_test/subpage\"},\"sa\":{\"href\":\"wiki/Subpage
test/subpage\"},\"dsr\":[0,37,28,2]}'>subpage</a></p>\n");
-add("html2html", "Render invalid page names as plain text (bug 51090)", "<p
data-parsoid='{\"dsr\":[0,141,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,141,8,9]}'>[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[143,389,0,0]}'>[[<span about=\"#mwt34\"
typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[145,162,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"./../foo\"}},\"i\":0}}]}'>./../foo</span>|bar]]\n[[<span
about=\"#mwt35\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[171,185,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo/.\"}},\"i\":0}}]}'>foo/.</span>|bar]]\n[[<span
about=\"#mwt36\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[194,209,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo/..\"}},\"i\":0}}]}'>foo/..</span>|bar]]\n[[<span
about=\"#mwt37\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[218,237,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo~~~~bar\"}},\"i\":0}}]}'>foo~~~~bar</span>]]\n[[<span
about=\"#mwt38\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[242,258,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo>bar\"}},\"i\":0}}]}'>foo>bar</span>]]\n[[<span
about=\"#mwt39\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[263,282,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo././bar\"}},\"i\":0}}]}'>foo././bar</span>]]\n[[<span
about=\"#mwt40\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[287,303,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo{bar\"}},\"i\":0}}]}'>foo{bar</span>]]\n[[<span
about=\"#mwt41\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[308,324,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo}bar\"}},\"i\":0}}]}'>foo}bar</span>]]\n[[<span
about=\"#mwt42\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[329,345,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo[bar\"}},\"i\":0}}]}'>foo[bar</span>]]\n[[<span
about=\"#mwt43\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[350,366,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo]bar\"}},\"i\":0}}]}'>foo]bar</span>]]\n[[<span
about=\"#mwt44\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[371,387,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo<bar\"}},\"i\":0}}]}'>foo<bar</span>]]</p>\n");
+add("html2html", "Render invalid page names as plain text (bug 51090)", "<p
data-parsoid='{\"dsr\":[0,277,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,33,8,9]}'>[[./../foo|bar]]</span>\n<span
typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[34,63,8,9]}'>[[foo�|bar]]</span>\n<span
typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[64,94,8,9]}'>[[foo/.|bar]]</span>\n<span
typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[95,126,8,9]}'>[[foo/..|bar]]</span>\n<span
typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[127,157,8,9]}'>[[foo~~~bar]]</span>\n<span
typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[158,186,8,9]}'>[[foo>bar]]</span>\n[[foo[bar]]\n<span
typeof=\"mw:Nowiki\" data-parsoid='{\"dsr\":[199,221,8,9]}'>[[.]]</span>\n<span
typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[222,245,8,9]}'>[[..]]</span>\n<span
typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[246,277,8,9]}'>[[foo././bar]]</span></p>\n\n<p
data-parsoid='{\"dsr\":[279,525,0,0]}'>[[<span about=\"#mwt34\"
typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[281,298,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"./../foo\"}},\"i\":0}}]}'>./../foo</span>|bar]]\n[[<span
about=\"#mwt35\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[307,321,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo/.\"}},\"i\":0}}]}'>foo/.</span>|bar]]\n[[<span
about=\"#mwt36\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[330,345,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo/..\"}},\"i\":0}}]}'>foo/..</span>|bar]]\n[[<span
about=\"#mwt37\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[354,373,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo~~~~bar\"}},\"i\":0}}]}'>foo~~~~bar</span>]]\n[[<span
about=\"#mwt38\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[378,394,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo>bar\"}},\"i\":0}}]}'>foo>bar</span>]]\n[[<span
about=\"#mwt39\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[399,418,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo././bar\"}},\"i\":0}}]}'>foo././bar</span>]]\n[[<span
about=\"#mwt40\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[423,439,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo{bar\"}},\"i\":0}}]}'>foo{bar</span>]]\n[[<span
about=\"#mwt41\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[444,460,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo}bar\"}},\"i\":0}}]}'>foo}bar</span>]]\n[[<span
about=\"#mwt42\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[465,481,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo[bar\"}},\"i\":0}}]}'>foo[bar</span>]]\n[[<span
about=\"#mwt43\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[486,502,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo]bar\"}},\"i\":0}}]}'>foo]bar</span>]]\n[[<span
about=\"#mwt44\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[507,523,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo<bar\"}},\"i\":0}}]}'>foo<bar</span>]]</p>\n");
add("html2html", "Disabled subpages", "<p
data-parsoid='{\"dsr\":[0,58,0,0]}'>[/index.php?title=/subpage&action=edit&redlink=1
/subpage]</p>\n");
add("html2html", "BUG 561: {{/Subpage}}", "<p
data-parsoid='{\"dsr\":[0,66,0,0]}'>[/index.php?title=Page/Subpage&action=edit&redlink=1
Page/Subpage]</p>\n");
add("html2html", "Link to category", "<p
data-parsoid='{\"dsr\":[0,72,0,0]}'><a rel=\"mw:WikiLink\"
href=\"./Wiki/Category:MediaWiki_User's_Guide\" title=\"Wiki/Category:MediaWiki
User's Guide\"
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Category:MediaWiki_User's_Guide\"},\"sa\":{\"href\":\"wiki/Category:MediaWiki
User's Guide\"},\"dsr\":[0,72,39,2]}'>Category:MediaWiki User's
Guide</a></p>\n");
@@ -610,8 +606,6 @@
add("html2html", "CSS line continuation 1", "<div style=\" \"
data-parsoid='{\"stx\":\"html\",\"a\":{\"style\":\" \"},\"sa\":{\"style\":\"/*
insecure input */\"},\"dsr\":[0,40,34,6]}'></div>\n");
add("html2html", "CSS line continuation 2", "<div style=\" \"
data-parsoid='{\"stx\":\"html\",\"a\":{\"style\":\" \"},\"sa\":{\"style\":\"/*
insecure input */\"},\"dsr\":[0,40,34,6]}'></div>\n");
add("html2html", "Parser hook: nested tags", "<pre
data-parsoid='{\"dsr\":[0,28,1,0]}'>'<tag>'\narray (\n)\n</tag></pre>\n<p
data-parsoid='{\"dsr\":[29,35,0,0]}'></tag></p>\n");
-add("html2html", "Parser hook: basic arguments", "<pre
data-parsoid='{\"dsr\":[0,120,1,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[1,120,8,9]}'>''\n array (\n 'width' => '200',\n
'height' => '100',\n 'depth' => '50',\n 'square' => 'square',\n
)</span></pre>\n");
-add("html2html", "Parser hook: argument containing a forward slash (bug
5344)", "<pre data-parsoid='{\"dsr\":[0,61,1,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[1,61,8,9]}'>''\n array (\n 'filename' =>
'/tmp/bla',\n )</span></pre>\n");
add("html2html", "Parser hook: empty input using terminated empty elements
(bug 2374)", "<pre data-parsoid='{\"dsr\":[0,36,1,0]}'>NULL\narray (\n 'foo'
=> 'bar',\n)</pre>\n<p data-parsoid='{\"dsr\":[37,41,0,0]}'>text</p>\n");
add("html2html", "Parser hook: static parser hook inside a comment", "\n");
add("html2html", "Sanitizer: Validating that <meta> and <link> work, but only
for Microdata", "<div itemscope=\"itemscope\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[0,253,27,6]}'>\n\t<p
data-parsoid='{\"dsr\":[29,150,0,0]}'><meta itemprop=\"hello\"
content=\"world\" />\n\t<meta http-equiv=\"refresh\"
content=\"5\">\n\t<meta itemprop=\"hello\" content=\"5\" /></p>\n\n\t<p
data-parsoid='{\"dsr\":[153,246,0,0]}'><a rel=\"mw:ExtLink\"
href=\"http://example.org\"
data-parsoid='{\"targetOff\":172,\"contentOffsets\":[172,172],\"dsr\":[153,173,19,1]}'></a>\n\t<link
rel=\"stylesheet\" href=\"http://example.org\">\n\t<a rel=\"mw:ExtLink\"
href=\"http://example.org\"
data-parsoid='{\"targetOff\":245,\"contentOffsets\":[245,245],\"dsr\":[226,246,19,1]}'></a></p>\n</div>\n");
@@ -701,10 +695,6 @@
add("html2html", "References: 5. ref tags in references should be processed
while ignoring all other content", "<p data-parsoid='{\"dsr\":[0,44,0,0]}'>A
<span about=\"#mwt2\" class=\"mw-ref\" id=\"cite_ref-a_1-0\"
rel=\"dc:references\" typeof=\"mw:Extension/ref\"
data-parsoid='{\"dsr\":[2,18,16,0]}'
data-mw='{\"name\":\"ref\",\"attrs\":{\"name\":\"a\"}}'><a
href=\"#cite_note-a-1\" style=\"counter-reset: mw-Ref 1;\"><span
class=\"mw-reflink-text\">[1]</span></a></span>\nB <span about=\"#mwt4\"
class=\"mw-ref\" id=\"cite_ref-b_2-0\" rel=\"dc:references\"
typeof=\"mw:Extension/ref\" data-parsoid='{\"dsr\":[21,44,14,6]}'
data-mw='{\"name\":\"ref\",\"body\":{\"id\":\"mw-reference-text-cite_note-b-2\"},\"attrs\":{\"name\":\"b\"}}'><a
href=\"#cite_note-b-2\" style=\"counter-reset: mw-Ref 2;\"><span
class=\"mw-reflink-text\">[2]</span></a></span></p>\n\n<ol
class=\"mw-references\" typeof=\"mw:Extension/references\" about=\"#mwt6\"
data-parsoid='{\"dsr\":[46,96,2,2]}'
data-mw='{\"name\":\"references\",\"body\":{\"extsrc\":\"<ref
name=\\\"a\\\">foo</ref>\",\"html\":\"\\n<span about=\\\"#mwt8\\\"
class=\\\"mw-ref\\\" rel=\\\"dc:references\\\" typeof=\\\"mw:Extension/ref\\\"
data-parsoid='{\\\"dsr\\\":[59,82,14,6]}'
data-mw='{\\\"name\\\":\\\"ref\\\",\\\"body\\\":{\\\"id\\\":\\\"mw-reference-text-cite_note-a-1\\\"},\\\"attrs\\\":{\\\"name\\\":\\\"a\\\"}}'><a
href=\\\"#cite_note-a-1\\\" style=\\\"counter-reset: mw-Ref 1;\\\"><span
class=\\\"mw-reflink-text\\\">[1]</span></a></span>\\n\"},\"attrs\":{}}'><li
about=\"#cite_note-a-1\" id=\"cite_note-a-1\"><a href=\"#cite_ref-a_1-0\"
rel=\"mw:referencedBy\"><span class=\"mw-linkback-text\">↑ </span></a> <span
id=\"mw-reference-text-cite_note-a-1\" class=\"mw-reference-text\"
data-parsoid=\"{}\">foo</span></li><li about=\"#cite_note-b-2\"
id=\"cite_note-b-2\"><a href=\"#cite_ref-b_2-0\" rel=\"mw:referencedBy\"><span
class=\"mw-linkback-text\">↑ </span></a> <span
id=\"mw-reference-text-cite_note-b-2\" class=\"mw-reference-text\"
data-parsoid=\"{}\">bar</span></li></ol>");
add("html2html", "Entities in ref name", "<p
data-parsoid='{\"dsr\":[0,38,0,0]}'><span about=\"#mwt2\" class=\"mw-ref\"
id=\"cite_ref-test_.26amp.3B_me_1-0\" rel=\"dc:references\"
typeof=\"mw:Extension/ref\" data-parsoid='{\"dsr\":[0,38,30,6]}'
data-mw='{\"name\":\"ref\",\"body\":{\"id\":\"mw-reference-text-cite_note-test_.26amp.3B_me-1\"},\"attrs\":{\"name\":\"test
&amp;amp; me\"}}'><a href=\"#cite_note-test_.26amp.3B_me-1\"
style=\"counter-reset: mw-Ref 1;\"><span
class=\"mw-reflink-text\">[1]</span></a></span></p>\n<ol
class=\"mw-references\" typeof=\"mw:Extension/references\" about=\"#mwt4\"
data-parsoid='{\"dsr\":[39,53,2,2]}'
data-mw='{\"name\":\"references\",\"attrs\":{}}'><li
about=\"#cite_note-test_.26amp.3B_me-1\"
id=\"cite_note-test_.26amp.3B_me-1\"><a
href=\"#cite_ref-test_.26amp.3B_me_1-0\" rel=\"mw:referencedBy\"><span
class=\"mw-linkback-text\">↑ </span></a> <span
id=\"mw-reference-text-cite_note-test_.26amp.3B_me-1\"
class=\"mw-reference-text\" data-parsoid=\"{}\">hi</span></li></ol>");
add("html2html", "Empty LI and TR nodes should not be stripped from top-level
content", "<ul data-parsoid='{\"dsr\":[0,9,0,0]}'><li
data-parsoid='{\"dsr\":[0,3,1,0]}'> a</li>\n<li
data-parsoid='{\"dsr\":[4,5,1,0]}'></li>\n<li
data-parsoid='{\"dsr\":[6,9,1,0]}'> b</li></ul>\n\n<table
data-parsoid='{\"dsr\":[11,26,2,2]}'>\n\n<tbody
data-parsoid='{\"dsr\":[15,24,0,0]}'><tr
data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[15,22,2,0]}'>\n<td
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[18,22,1,0]}'>foo</td></tr>\n\n</tbody></table>\n");
-add("html2html", "Headings: 6a. Heading chars in SOL context (with trailing
spaces)", "<p data-parsoid='{\"dsr\":[0,20,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,20,8,9]}'>=a=</span></p>\n\n<p
data-parsoid='{\"dsr\":[22,42,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[22,42,8,9]}'>=a=</span></p> \n\n<p
data-parsoid='{\"dsr\":[45,65,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[45,65,8,9]}'>=a=</span></p>\t\n\n<p
data-parsoid='{\"dsr\":[68,88,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[68,88,8,9]}'>=a=</span></p> \t\n");
-add("html2html", "Headings: 6b. Heading chars in SOL context (with trailing
newlines)", "<p data-parsoid='{\"dsr\":[0,22,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,22,8,9]}'>=a=\nb</span></p>\n\n<p
data-parsoid='{\"dsr\":[24,47,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[24,47,8,9]}'>=a= \nb</span></p>\n\n<p
data-parsoid='{\"dsr\":[49,72,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[49,72,8,9]}'>=a=\t\nb</span></p>\n\n<p
data-parsoid='{\"dsr\":[74,98,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[74,98,8,9]}'>=a=\t \nb</span></p>\n");
-add("html2html", "Headings: 6c. Heading chars in SOL context (leading newline
break)", "<p data-parsoid='{\"dsr\":[0,22,0,0]}'>a\n<span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[2,22,8,9]}'>=b=</span></p>\n");
-add("html2html", "Headings: 6d. Heading chars in SOL context (with
interspersed comments)", "<!--c0--><p data-parsoid='{\"dsr\":[9,29,0,0]}'><span
typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[9,29,8,9]}'>=a=</span></p>\n\n<!--c1--><p
data-parsoid='{\"dsr\":[40,60,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[40,60,8,9]}'>=a=</span></p> <!--c2-->\t <!--c3-->\n");
add("html2html", "Links 3. WikiLinks: No escapes needed", "<p
data-parsoid='{\"dsr\":[0,31,0,0]}'>[[Foo|[Foobar]]\n<a rel=\"mw:WikiLink\"
href=\"./Foo\" title=\"Foo\"
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"Foo\"},\"dsr\":[16,31,6,2]}'>foo|bar</a></p>\n");
add("html2html", "1. Leading whitespace in SOL context should be escaped", "<p
data-parsoid='{\"dsr\":[0,19,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[0,18,8,9]}'> </span>a</p>\n\n<p
data-parsoid='{\"dsr\":[21,41,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[21,39,8,9]}'> </span> a</p>\n\n<p
data-parsoid='{\"dsr\":[43,50,0,0]}'>\ta(tab)</p>\n\n<pre
data-parsoid='{\"dsr\":[52,55,1,0]}'>\ta</pre>\n\n<!--cmt--><p
data-parsoid='{\"dsr\":[67,87,0,0]}'><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[67,85,8,9]}'> </span> a</p>\n\n<p
data-parsoid='{\"dsr\":[89,110,0,0]}'>a\n<span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[91,109,8,9]}'> </span>b</p>\n\n<p
data-parsoid='{\"dsr\":[112,116,0,0]}'>a\n\tb</p>\n\n<p
data-parsoid='{\"dsr\":[118,123,0,0]}'>a\n\t b</p>\n");
add("html2html", "1. a tags", "<p data-parsoid='{\"dsr\":[0,38,0,0]}'><a
href=\"http://google.com\">google</a></p>");
@@ -731,9 +721,6 @@
add("html2wt", "Non-word characters don't terminate tag names + tidy",
"<blockquote|>a\n\n<b→> doesn't terminate </b→>\n\n<bä> doesn't terminate
</bä>\n\n<boo> doesn't terminate </boo>\n\n<s.foo> doesn't terminate
</s.foo>\n\n<sub-ID#1>\n");
add("html2wt", "Non-word characters are valid in extension tags (T19663)", "
'tåg'\n array (\n )\n");
add("html2wt", "Bare pipe character from a template (bug 52363)", "|\n");
-add("html2wt", "<nowiki> unordered list", "<nowiki>*</nowiki> This is not an
unordered list item.\n");
-add("html2wt", "<nowiki> spacing", "Lorem ipsum dolor\nsed abit.\n<nowiki>
</nowiki> sed nullum.\n<nowiki>:</nowiki>and a colon\n");
-add("html2wt", "nowiki 3", ": There is not nowiki.\n: There is nowiki.\n#
There is not nowiki.\n# There is nowiki.\n* There is not nowiki.\n* There is
nowiki.\n");
add("html2wt", "Entities inside <nowiki>", "<\n");
add("html2wt", "T71950: 2. Put nowiki as close to cause as possible, after '
:'", "This text : L<nowiki>''</nowiki>[[Foo]]\n");
add("html2wt", "Comments and Indent-Pre", " asdf\n\n asdf\n\n asdf\n\nxyz\n\n
asdf\n xyz\n");
@@ -765,7 +752,7 @@
add("html2wt", "Entities inside <pre>", " <\n");
add("html2wt", "<pre> with forbidden attribute values (bug 3202)", " Narrow
screen goodies\n");
add("html2wt", "<nowiki> inside <pre> (bug 13238)", " <nowiki>\n\n \n\n
<nowiki>Foo</nowiki>\n");
-add("html2wt", "<nowiki> and <pre> preference (first one wins)", "
<nowiki>\n\n</nowiki>\n</pre>\n\n<nowiki><pre>\n<nowiki>\n</pre>\n\n</pre></nowiki>\n");
+add("html2wt", "<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("html2wt", "</pre> inside nowiki", "</pre>\n");
add("html2wt", "HTML pre followed by indent-pre", " foo\n\n bar\n");
add("html2wt", "Templates: Indent-Pre: 1a. Templates that break a line should
suppress <pre>", "");
@@ -794,7 +781,6 @@
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");
add("html2wt", "HTML-pre: 2: indented text", " foo\n");
-add("html2wt", "HTML-pre: 3: other wikitext", " * foo\n <nowiki># bar\n = no-h
=\n '' no-italic ''\n [[ NoLink ]]</nowiki>\n");
add("html2wt", "Simple definition", "; name \n: Definition\n");
add("html2wt", "Definition list with no space", "; name\n: Definition\n");
add("html2wt", "Definition list with URL link", "; http://example.com/ \n:
definition\n");
@@ -1145,7 +1131,7 @@
add("html2wt", "Parsoid-specific image handling - caption with a template in
it", "[[File:Foobar.jpg|thumb|200x200px|This caption has a
{{echo|transclusion}} in it.]]\n");
add("html2wt", "Subpage link", "[[wiki/Subpage test/subpage|/subpage]]\n");
add("html2wt", "Subpage noslash link", "[[wiki/Subpage
test/subpage|subpage]]\n");
-add("html2wt", "Render invalid page names as plain text (bug 51090)",
"<nowiki>[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]</nowiki>\n\n[[{{echo|./../foo}}|bar]]\n[[{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}|bar]]\n[[{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}]]\n[[{{echo|foo<bar}}]]\n");
+add("html2wt", "Render invalid page names as plain text (bug 51090)",
"<nowiki>[[./../foo|bar]]</nowiki>\n<nowiki>[[foo�|bar]]</nowiki>\n<nowiki>[[foo/.|bar]]</nowiki>\n<nowiki>[[foo/..|bar]]</nowiki>\n<nowiki>[[foo~~~bar]]</nowiki>\n<nowiki>[[foo>bar]]</nowiki>\n[[foo[bar]]\n<nowiki>[[.]]</nowiki>\n<nowiki>[[..]]</nowiki>\n<nowiki>[[foo././bar]]</nowiki>\n\n[[{{echo|./../foo}}|bar]]\n[[{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}|bar]]\n[[{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}]]\n[[{{echo|foo<bar}}]]\n");
add("html2wt", "Disabled subpages",
"[/index.php?title=/subpage&action=edit&redlink=1 /subpage]\n");
add("html2wt", "BUG 561: {{/Subpage}}",
"[/index.php?title=Page/Subpage&action=edit&redlink=1 Page/Subpage]\n");
add("html2wt", "Link to category", "[[wiki/Category:MediaWiki User's
Guide|Category:MediaWiki User's Guide]]\n");
@@ -1233,8 +1219,8 @@
add("html2wt", "Parser hook: case insensitive", " 'input'\n array (\n )\n");
add("html2wt", "Parser hook: case insensitive, redux", " 'input'\n array (\n
)\n");
add("html2wt", "Parser hook: nested tags", " '<tag>'\n array (\n )\n
</tag>\n</tag>\n");
-add("html2wt", "Parser hook: basic arguments", " <nowiki>''\n array (\n
'width' => '200',\n 'height' => '100',\n 'depth' => '50',\n 'square' =>
'square',\n )</nowiki>\n");
-add("html2wt", "Parser hook: argument containing a forward slash (bug 5344)",
" <nowiki>''\n array (\n 'filename' => '/tmp/bla',\n )</nowiki>\n");
+add("html2wt", "Parser hook: basic arguments", " <nowiki>''</nowiki>\n array
(\n <nowiki> </nowiki> 'width' => '200',\n <nowiki> </nowiki> 'height' =>
'100',\n <nowiki> </nowiki> 'depth' => '50',\n <nowiki> </nowiki> 'square' =>
'square',\n )\n");
+add("html2wt", "Parser hook: argument containing a forward slash (bug 5344)",
" <nowiki>''</nowiki>\n array (\n <nowiki> </nowiki> 'filename' =>
'/tmp/bla',\n )\n");
add("html2wt", "Parser hook: empty input using terminated empty elements (bug
2374)", " NULL\n array (\n 'foo' => 'bar',\n )\ntext\n");
add("html2wt", "Parser hook: basic arguments using terminated empty elements
(bug 2374)", " NULL\n array (\n 'width' => '200',\n 'height' => '100',\n
'depth' => '50',\n 'square' => 'square',\n )\n\nother stuff\n</tag>\n");
add("html2wt", "Parser hook: static parser hook not inside a comment", "hello,
world\n");
@@ -1947,7 +1933,7 @@
add("selser", "Render invalid page names as plain text (bug 51090) [0,0,1]",
"[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]\n\n[[{{echo|./../foo}}|bar]]\n[[{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}|bar]]\n[[{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}]]\n[[{{echo|foo<bar}}]]");
add("selser", "Render invalid page names as plain text (bug 51090)
[2,2,[3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0]]",
"pwgl4v8r9af6flxr\n\n[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]\n\nhtc0s57znl9v0a4i\n\n{{echo|./../foo}}{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}|bar]]\n[[{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}{{echo|foo]bar}}]]\n[[{{echo|foo<bar}}]]");
add("selser", "Render invalid page names as plain text (bug 51090) [0,3,2]",
"[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]\n\ngkfu6gduolqmpldi\n\n[[{{echo|./../foo}}|bar]]\n[[{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}|bar]]\n[[{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}]]\n[[{{echo|foo<bar}}]]");
-add("selser", "Render invalid page names as plain text (bug 51090)
[[2],0,[4,0,2,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,0,0,4,0,3]]",
"8sctlarbskfswcdi<nowiki>[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]</nowiki>\n\nfxzu21euibpgb9{{echo|./../foo}}k3i4gi7d5yst6gvi|bar]]\n[[{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}<nowiki>7zyih9glwodmquxr|bar]]\n[[</nowiki>{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}3e27dqprn1k2zkt9{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}xof8d4gk7hw7b9{{echo|foo<bar}}\n");
+add("selser", "Render invalid page names as plain text (bug 51090)
[[2],0,[4,0,2,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,0,0,4,0,3]]",
"8sctlarbskfswcdi<nowiki>[[./../foo|bar]]</nowiki>\n<nowiki>[[foo�|bar]]</nowiki>\n<nowiki>[[foo/.|bar]]</nowiki>\n<nowiki>[[foo/..|bar]]</nowiki>\n<nowiki>[[foo~~~bar]]</nowiki>\n<nowiki>[[foo>bar]]</nowiki>\n[[foo[bar]]\n<nowiki>[[.]]</nowiki>\n<nowiki>[[..]]</nowiki>\n<nowiki>[[foo././bar]]</nowiki>\n\nfxzu21euibpgb9{{echo|./../foo}}k3i4gi7d5yst6gvi|bar]]\n[[{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}<nowiki>7zyih9glwodmquxr|bar]]\n[[</nowiki>{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}3e27dqprn1k2zkt9{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}xof8d4gk7hw7b9{{echo|foo<bar}}\n");
add("selser", "Render invalid page names as plain text (bug 51090) [0,0,4]",
"[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]\n\n5cifaj4uowyaatt9\n");
add("selser", "Render invalid page names as plain text (bug 51090) [0,0,2]",
"[[./../foo|bar]]\n[[foo�|bar]]\n[[foo/.|bar]]\n[[foo/..|bar]]\n[[foo~~~bar]]\n[[foo>bar]]\n[[foo[bar]]\n[[.]]\n[[..]]\n[[foo././bar]]\n\nff48sg2pipqwu3di\n\n[[{{echo|./../foo}}|bar]]\n[[{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}|bar]]\n[[{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}]]\n[[{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}]]\n[[{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}]]\n[[{{echo|foo<bar}}]]");
add("selser", "Render invalid page names as plain text (bug 51090)
[[4],3,[0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,4,0,0,0,0,0,2]]",
"a8exokpi7bricnmi\n\n[[{{echo|./../foo}}<nowiki>yjmnkmy2satt9|bar]]\n[[</nowiki>{{echo|foo/.}}|bar]]\n[[{{echo|foo/..}}|bar]]\n[[{{echo|foo~~~~bar}}]]\n[[{{echo|foo>bar}}<nowiki>naobmwo11fnipb9]]\n[[</nowiki>{{echo|foo././bar}}]]\n[[{{echo|foo{bar}}]]\n[[{{echo|foo}bar}}rksixalimh392j4i{{echo|foo[bar}}]]\n[[{{echo|foo]bar}}]]\n[[{{echo|foo<bar}}<nowiki>xmch4v09b9m2huxr]]</nowiki>");
@@ -2088,16 +2074,16 @@
add("selser", "Table attribute safety [[0,[2,0]]]",
"{|\n<!--hopuq8owdrv8to6r-->!+
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"|
status\n|}");
add("selser", "Table attribute safety [[0,[0,3]]]", "{|\n!+
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"|
status\n|}");
add("selser", "Table attribute safety [[0,[1,2]]]", "{|\n!+
style=\"<nowiki>border-width:expression(0+alert(document.cookie))</nowiki>\"|
status<!--skyjeiq2kwr0be29-->\n|}");
-add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[0,1,4]]", "<div itemscope>\n\t<nowiki><meta itemprop=\"hello\"
content=\"world\">\n\t<meta http-equiv=\"refresh\" content=\"5\">\n\t<meta
itemprop=\"hello\" http-equiv=\"refresh\" content=\"5\">\n\t<link
itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\" itemprop=\"hello\"
href=\"{{SERVER}}\"></nowiki>\n9lxnoixxq085b3xr</div>");
+add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[0,1,4]]", "<div itemscope>\n\t<nowiki><meta itemprop=\"hello\"
content=\"world\"></nowiki>\n\t<nowiki><meta http-equiv=\"refresh\"
content=\"5\"></nowiki>\n\t<nowiki><meta itemprop=\"hello\"
http-equiv=\"refresh\" content=\"5\"></nowiki>\n\t<nowiki><link
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link
rel=\"stylesheet\" href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link
rel=\"stylesheet\" itemprop=\"hello\"
href=\"{{SERVER}}\"></nowiki>\n9lxnoixxq085b3xr</div>");
add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[2,0,2]]", "<div itemscope>1tq4nuxaexcu9pb9\n\t<meta
itemprop=\"hello\" content=\"world\">\n\t<meta http-equiv=\"refresh\"
content=\"5\">\n\t<meta itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\">\n\t<link itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link
rel=\"stylesheet\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\">\nkcbq6pis8m2t9\n</div>");
add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [2]", "rcydl379jopkqpvi<div itemscope>\n\t<meta itemprop=\"hello\"
content=\"world\">\n\t<meta http-equiv=\"refresh\" content=\"5\">\n\t<meta
itemprop=\"hello\" http-equiv=\"refresh\" content=\"5\">\n\t<link
itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\" itemprop=\"hello\"
href=\"{{SERVER}}\">\n</div>");
-add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[0,[2],2]]", "<div itemscope>\n\t047cgm8enksrwwmi<nowiki><meta
itemprop=\"hello\" content=\"world\">\n\t<meta http-equiv=\"refresh\"
content=\"5\">\n\t<meta itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\">\n\t<link itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link
rel=\"stylesheet\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n4pny61gu2tx7ds4i\n</div>");
-add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[4,1,0]]", "<div itemscope>spu0tptv3lwka9k9\n<nowiki><meta
itemprop=\"hello\" content=\"world\">\n\t<meta http-equiv=\"refresh\"
content=\"5\">\n\t<meta itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\">\n\t<link itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link
rel=\"stylesheet\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n</div>");
+add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[0,[2],2]]", "<div itemscope>\n\t047cgm8enksrwwmi<nowiki><meta
itemprop=\"hello\" content=\"world\"></nowiki>\n\t<nowiki><meta
http-equiv=\"refresh\" content=\"5\"></nowiki>\n\t<nowiki><meta
itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\"></nowiki>\n\t<nowiki><link itemprop=\"hello\"
href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link rel=\"stylesheet\"
href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n4pny61gu2tx7ds4i\n</div>");
+add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[4,1,0]]", "<div itemscope>spu0tptv3lwka9k9\n<nowiki><meta
itemprop=\"hello\" content=\"world\"></nowiki>\n\t<nowiki><meta
http-equiv=\"refresh\" content=\"5\"></nowiki>\n\t<nowiki><meta
itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\"></nowiki>\n\t<nowiki><link itemprop=\"hello\"
href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link rel=\"stylesheet\"
href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n</div>");
add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[4,[3],0]]", "<div itemscope>99wejgddgaybke29\n</div>");
add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[0,0,4]]", "<div itemscope>\n\t<meta itemprop=\"hello\"
content=\"world\">\n\t<meta http-equiv=\"refresh\" content=\"5\">\n\t<meta
itemprop=\"hello\" http-equiv=\"refresh\" content=\"5\">\n\t<link
itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\" itemprop=\"hello\"
href=\"{{SERVER}}\">\new3jgq2guzhncdi</div>");
-add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[2,1,0]]", "<div itemscope>px2m4ecth1qyqfr\n\t<nowiki><meta
itemprop=\"hello\" content=\"world\">\n\t<meta http-equiv=\"refresh\"
content=\"5\">\n\t<meta itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\">\n\t<link itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link
rel=\"stylesheet\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n</div>");
-add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[0,1,0]]", "<div itemscope>\n\t<nowiki><meta itemprop=\"hello\"
content=\"world\">\n\t<meta http-equiv=\"refresh\" content=\"5\">\n\t<meta
itemprop=\"hello\" http-equiv=\"refresh\" content=\"5\">\n\t<link
itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\" itemprop=\"hello\"
href=\"{{SERVER}}\"></nowiki>\n</div>");
-add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[0,[2],0]]", "<div itemscope>\n\tx3hbyea8xovtpgb9<nowiki><meta
itemprop=\"hello\" content=\"world\">\n\t<meta http-equiv=\"refresh\"
content=\"5\">\n\t<meta itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\">\n\t<link itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link
rel=\"stylesheet\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n</div>");
+add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[2,1,0]]", "<div itemscope>px2m4ecth1qyqfr\n\t<nowiki><meta
itemprop=\"hello\" content=\"world\"></nowiki>\n\t<nowiki><meta
http-equiv=\"refresh\" content=\"5\"></nowiki>\n\t<nowiki><meta
itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\"></nowiki>\n\t<nowiki><link itemprop=\"hello\"
href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link rel=\"stylesheet\"
href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n</div>");
+add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[0,1,0]]", "<div itemscope>\n\t<nowiki><meta itemprop=\"hello\"
content=\"world\"></nowiki>\n\t<nowiki><meta http-equiv=\"refresh\"
content=\"5\"></nowiki>\n\t<nowiki><meta itemprop=\"hello\"
http-equiv=\"refresh\" content=\"5\"></nowiki>\n\t<nowiki><link
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link
rel=\"stylesheet\" href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link
rel=\"stylesheet\" itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n</div>");
+add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[0,[2],0]]", "<div itemscope>\n\tx3hbyea8xovtpgb9<nowiki><meta
itemprop=\"hello\" content=\"world\"></nowiki>\n\t<nowiki><meta
http-equiv=\"refresh\" content=\"5\"></nowiki>\n\t<nowiki><meta
itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\"></nowiki>\n\t<nowiki><link itemprop=\"hello\"
href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link rel=\"stylesheet\"
href=\"{{SERVER}}\"></nowiki>\n\t<nowiki><link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\"></nowiki>\n</div>");
add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [1]", "<div itemscope=\"\" data-foobar=\"q8adwgvp6owjc3di\">\n\t<meta
itemprop=\"hello\" content=\"world\">\n\t<meta http-equiv=\"refresh\"
content=\"5\">\n\t<meta itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\">\n\t<link itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link
rel=\"stylesheet\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\">\n</div>");
add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[2,2,0]]", "<div itemscope>tphlnpjbn019k9\n\tzfr328x4l016pqfr\n<meta
itemprop=\"hello\" content=\"world\">\n\t<meta http-equiv=\"refresh\"
content=\"5\">\n\t<meta itemprop=\"hello\" http-equiv=\"refresh\"
content=\"5\">\n\t<link itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link
rel=\"stylesheet\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
itemprop=\"hello\" href=\"{{SERVER}}\">\n</div>");
add("selser", "Sanitizer: Validating that <meta> and <link> work, but only for
Microdata [[3,0,4]]", "<div itemscope>\n<meta itemprop=\"hello\"
content=\"world\">\n\t<meta http-equiv=\"refresh\" content=\"5\">\n\t<meta
itemprop=\"hello\" http-equiv=\"refresh\" content=\"5\">\n\t<link
itemprop=\"hello\" href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\"
href=\"{{SERVER}}\">\n\t<link rel=\"stylesheet\" itemprop=\"hello\"
href=\"{{SERVER}}\">\naqpwsr7leatyy14i</div>");
@@ -2504,7 +2490,7 @@
add("selser", "Improperly nested inline or quotes tags with whitespace in
between [[[0,3],[3],0,3,0]]", "<span> </span></s>\n ''");
add("selser", "Improperly nested inline or quotes tags with whitespace in
between [[[2,1],[3],3,[0,3],0]]", "<span>i9p8te7ufdmquxr <s
data-foobar=\"xoximjgruc95dn29\">x</span></s>''' ''' ''");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[0,4,[2,[[4],2]]]",
"\n\neyvglbq1wiykfbt9<table><!--yjj7q4l8vy22o6r-->\n<tr><td>c2kzihajh6oxyldi</td><!--u6dd8p15d8guv7vi-->\n</table>");
-add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[1,3,[2,[[4],3]]]", "<nowiki> </nowiki><nowiki>||
||</nowiki><table><!--07pdt8u7nxvcmcxr-->\n<tr><td>w6cuullrqw0wl8fr</td>\n</table>");
+add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[1,3,[2,[[4],3]]]", "<nowiki> </nowiki><nowiki>||</nowiki>
<nowiki>||</nowiki><table><!--07pdt8u7nxvcmcxr-->\n<tr><td>w6cuullrqw0wl8fr</td>\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[3,2,2]", "r7yvmnw0lwstt9\njvym2daxe28adcxr<table>\n<tr> || ||\n<td>
a\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[3,2,1]", "mk36x4nnqo7p66r\n<table data-foobar=\"j76ebe3ig8u59udi\">\n<tr> ||
||\n<td> a\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[0,3,[2,2]]", "<table><!--20ybuhlylvnjc3di-->\n<!--ia2m4awxfye97ldi--><tr><td>
a\n</table>");
@@ -2516,7 +2502,7 @@
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[0,3,4]", "\n\n9k078dwzmb6e0zfr\n");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[[3],0,2]", "\n79u7w8mk0qyc766r<table>\n<tr> || ||\n<td> a\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[0,0,2]", "\n17g7ad7yjq1zia4i<table>\n<tr> || ||\n<td> a\n</table>");
-add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[1,0,1]", "<nowiki> </nowiki><nowiki>|| ||</nowiki>\n<table
data-foobar=\"734xmyt3rp5jyvi\">\n<tr> || ||\n<td> a\n</table>");
+add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[1,0,1]", "<nowiki> </nowiki><nowiki>||</nowiki> <nowiki>||</nowiki>\n<table
data-foobar=\"734xmyt3rp5jyvi\">\n<tr> || ||\n<td> a\n</table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[2,0,[0,3]]", "z8xg0t8oxy8k6gvi\n\n\n<table></table>");
add("selser", "2. Ensure fostered text content is wrapped in element nodes
(traps regressions around fostered marker on the element getting lost)
[2,2,[2,[3,2]]]",
"4p9b5ylwp6gpsyvi\n\n\n\n52u735k3ah96n7b9\n<table><!--u4n4phdgngffxbt9-->\n<!--ox538fcmtef2bj4i-->\n</table>");
add("selser", "Table in fosterable position 5",
"{{OpenTable}}\n<div>\n{|\n|}\n");
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 47d4134..43717ce 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -1367,9 +1367,11 @@
<nowiki> unordered list
!! wikitext
<nowiki>* This is not an unordered list item.</nowiki>
-!! html
+!! html/php
<p>* This is not an unordered list item.
</p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">* This is not an unordered list item.</span></p>
!! end
!! test
@@ -1382,7 +1384,7 @@
:and a colon
</nowiki>
-!! html
+!! html/php
<p>Lorem ipsum dolor
sed abit.
@@ -1391,6 +1393,14 @@
:and a colon
</p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">Lorem ipsum dolor
+
+sed abit.
+ sed nullum.
+
+:and a colon
+</span></p>
!! end
!! test
@@ -1404,7 +1414,7 @@
*There is not nowiki.
*There is <nowiki>nowiki</nowiki>.
-!! html
+!! html/php
<dl><dd>There is not nowiki.</dd>
<dd>There is nowiki.</dd></dl>
<ol><li>There is not nowiki.</li>
@@ -1412,6 +1422,15 @@
<ul><li>There is not nowiki.</li>
<li>There is nowiki.</li></ul>
+!! html/parsoid
+<dl><dd data-parsoid='{}'>There is not nowiki.</dd>
+<dd data-parsoid='{}'>There is <span
typeof="mw:Nowiki">nowiki</span>.</dd></dl>
+
+<ol><li data-parsoid='{}'>There is not nowiki.</li>
+<li data-parsoid='{}'>There is <span
typeof="mw:Nowiki">nowiki</span>.</li></ol>
+
+<ul><li data-parsoid='{}'>There is not nowiki.</li>
+<li data-parsoid='{}'>There is <span
typeof="mw:Nowiki">nowiki</span>.</li></ul>
!! end
!! test
@@ -1440,7 +1459,7 @@
!! html
<p>* </nowiki> tag</p>
!! wikitext
-<nowiki>* </nowiki></nowiki> tag
+<nowiki>*</nowiki> <nowiki></nowiki></nowiki> tag
!! end
!! test
@@ -2227,7 +2246,7 @@
</nowiki>
</pre>
-!! html
+!! html/php
<pre>
<nowiki>
</pre>
@@ -2240,6 +2259,18 @@
</pre>
</p>
+!! html/parsoid
+<pre data-parsoid='{"stx":"html","strippedNL":true}'><nowiki>
+</pre>
+<p><span typeof="mw:Placeholder"
data-parsoid='{"src":"</nowiki>"}'></nowiki></span>
+</pre></p>
+
+<p><span typeof="mw:Nowiki">
+<pre>
+<nowiki>
+</pre>
+</span>
+</pre></p>
!! end
!! test
@@ -3401,7 +3432,7 @@
'' no-italic ''
[[ NoLink ]]
</pre>
-!! html
+!! html/php
<pre>
* foo
# bar
@@ -3410,6 +3441,13 @@
[[ NoLink ]]
</pre>
+!! html/parsoid
+<pre data-parsoid='{"stx":"html","strippedNL":true}'>* foo
+# bar
+= no-h =
+'' no-italic ''
+[[ NoLink ]]
+</pre>
!!end
###
@@ -21606,8 +21644,6 @@
!! test
Headings: 6a. Heading chars in SOL context (with trailing spaces)
-!! options
-parsoid
!! wikitext
<nowiki>=a=</nowiki>
@@ -21616,17 +21652,24 @@
<nowiki>=a=</nowiki>
<nowiki>=a=</nowiki>
-!! html
-<p>=a=</p>
-<p>=a= </p>
-<p>=a= </p>
-<p>=a= </p>
+!! html/php
+<p>=a=
+</p><p>=a=
+</p><p>=a=
+</p><p>=a=
+</p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">=a=</span></p>
+
+<p><span typeof="mw:Nowiki">=a=</span></p>
+
+<p><span typeof="mw:Nowiki">=a=</span></p>
+
+<p><span typeof="mw:Nowiki">=a=</span></p>
!!end
!! test
Headings: 6b. Heading chars in SOL context (with trailing newlines)
-!! options
-parsoid
!! wikitext
<nowiki>=a=
b</nowiki>
@@ -21639,48 +21682,65 @@
<nowiki>=a=
b</nowiki>
-!! html
+!! html/php
<p>=a=
-b</p>
-<p>=a=
-b</p>
-<p>=a=
-b</p>
-<p>=a=
-b</p>
+b
+</p><p>=a=
+b
+</p><p>=a=
+b
+</p><p>=a=
+b
</p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">=a=
+b</span></p>
+
+<p><span typeof="mw:Nowiki">=a=
+b</span></p>
+
+<p><span typeof="mw:Nowiki">=a=
+b</span></p>
+
+<p><span typeof="mw:Nowiki">=a=
+b</span></p>
!!end
!! test
Headings: 6c. Heading chars in SOL context (leading newline break)
-!! options
-parsoid
!! wikitext
a
<nowiki>=b=</nowiki>
-!! html
+!! html/php
<p>a
-=b=</p>
+=b=
+</p>
+!! html/parsoid
+<p>a
+<span typeof="mw:Nowiki">=b=</span>
!!end
!! test
Headings: 6d. Heading chars in SOL context (with interspersed comments)
-!! options
-parsoid
!! wikitext
<!--c0--><nowiki>=a=</nowiki>
<!--c1--><nowiki>=a=</nowiki> <!--c2--> <!--c3-->
-!! html
-<p><!--c0-->=a=</p>
-<p><!--c1-->=a= <!--c2--> <!--c3--></p>
+!! html/php
+<p>=a=
+</p><p>=a=
+</p>
+!! html/parsoid
+<!--c0--><p><span typeof="mw:Nowiki">=a=</span></p>
+
+<!--c1--><p><span typeof="mw:Nowiki">=a=</span></p> <!--c2--> <!--c3-->
!!end
!! test
Headings: 6d. Heading chars in SOL context (No escaping needed)
!! options
parsoid=html2wt
-!! html
+!! html/parsoid
=a=<div>b</div>
!! wikitext
=a=<div>b</div>
@@ -21690,11 +21750,11 @@
Headings: 7. Insert a newline between new content and headings
!! options
parsoid=html2wt
-!! html
+!! html/parsoid
<h2>NEW</h2>
<p>new</p>
-<h2 data-parsoid='{"dsr":[0,5,2,2]}'>A</h2>
-<p data-parsoid='{"dsr":[6,7,0,0]}'>a</p>
+<h2 data-parsoid='{}'>A</h2>
+<p data-parsoid='{}'>a</p>
!! wikitext
== NEW ==
new
@@ -21723,11 +21783,17 @@
<nowiki>#</nowiki>foo
<nowiki>;Foo:</nowiki>bar
-!! html
+!! html/php
<p>*foo
</p><p>#foo
</p><p>;Foo:bar
</p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">*</span>foo</p>
+
+<p><span typeof="mw:Nowiki">#</span>foo</p>
+
+<p><span typeof="mw:Nowiki">;Foo:</span>bar</p>
!!end
!! test
--
To view, visit https://gerrit.wikimedia.org/r/227481
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7aa00ee0020c5f69c3acb1cab069ceab77b75ab4
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