Subramanya Sastry has uploaded a new change for review.
https://gerrit.wikimedia.org/r/119540
Change subject: WIP: Bug 62716: Fix buggy 'isConvertibleToString'
......................................................................
WIP: Bug 62716: Fix buggy 'isConvertibleToString'
* To be completed.
Change-Id: I590b8675ea82c1d2b305dee750a4c378febfec07
---
M lib/ext.core.TemplateHandler.js
M tests/parserTests-blacklist.js
2 files changed, 20 insertions(+), 22 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/40/119540/1
diff --git a/lib/ext.core.TemplateHandler.js b/lib/ext.core.TemplateHandler.js
index b7be757..c3e0589 100644
--- a/lib/ext.core.TemplateHandler.js
+++ b/lib/ext.core.TemplateHandler.js
@@ -254,28 +254,24 @@
TemplateHandler.prototype.resolveTemplateTarget = function ( state, targetToks
) {
- function isConvertibleToString( tokens ) {
+ function resolvabilityInfo( tokens ) {
var maybeTarget = Util.tokensToString( tokens, true );
if ( Array.isArray(maybeTarget) ) {
+ var allString = true;
for ( var i = 0, l = maybeTarget[1].length; i < l; i++
) {
var ntt = maybeTarget[1][0];
- var nonTextTokenCons = ntt.constructor;
- if ( nonTextTokenCons === TagTk ||
- nonTextTokenCons ===
SelfclosingTagTk ||
- nonTextTokenCons === EndTagTk )
- {
- if (ntt.name !== 'meta' ||
-
!ntt.getAttribute("typeof") ||
-
!ntt.getAttribute("typeof").match(/mw:/))
- {
- return false;
+ // We are okay with {{..}} and {{{..}}} in
template targets.
+ if (ntt.constructor === SelfclosingTagTk) {
+ allString = false;
+ if (ntt.name !== 'template' && ntt.name
!== 'templatearg') {
+ return { isStr: false };
}
}
}
- return true;
+ return { isStr: true, simple: allString }
} else {
- return true;
+ return { isStr: true, simple: true }
}
}
@@ -313,7 +309,8 @@
// We are dealing with a real template, not a parser function.
// Apply more stringent standards for template targets.
- if (isConvertibleToString(targetToks)) {
+ var tgtInfo = resolvabilityInfo(targetToks);
+ if (tgtInfo.isStr) {
// We can use the stringified target tokens
var namespaceId =
env.conf.wiki.namespaceIds[lowerPrefix.replace(' ', '_')];
@@ -331,7 +328,9 @@
target = env.resolveTitle(target, namespaceId);
// data-mw.target.href should be a url
- state.resolvedTemplateTarget =
Util.sanitizeTitleURI(env.page.relativeLinkPrefix + target);
+ if (tgtInfo.simple) {
+ state.resolvedTemplateTarget =
Util.sanitizeTitleURI(env.page.relativeLinkPrefix + target);
+ }
return { isPF: false, target: target };
} else {
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index 639f9c5..82eadf3 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -135,8 +135,9 @@
add("wt2html", "Namespace (lang=de) Benutzer Diskussion {{ns:3}}", "<p
data-parsoid='{\"dsr\":[0,8,0,0]}'><span typeof=\"mw:Transclusion\"
about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"ns:3\",\"function\":\"ns\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"src\":\"{{ns:3}}\",\"dsr\":[0,8,null,null],\"pi\":[[]]}'>3</span></p>");
add("wt2html", "Urlencode", "<p data-parsoid='{\"dsr\":[0,115,0,0]}'><span
typeof=\"mw:Transclusion\" about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"urlencode:hi
world?!\",\"function\":\"urlencode\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"src\":\"{{urlencode:hi
world?!}}\",\"dsr\":[0,24,null,null],\"pi\":[[]]}'>hi%20world%3F!</span>\n<span
typeof=\"mw:Transclusion\" about=\"#mwt2\" id=\"mwt2\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"urlencode:hi
world?!\",\"function\":\"urlencode\"},\"params\":{\"1\":{\"wt\":\"WIKI\"}},\"i\":0}}]}'
data-parsoid='{\"dsr\":[25,54,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>hi%20world%3F!</span>\n<span
typeof=\"mw:Transclusion\" about=\"#mwt3\" id=\"mwt3\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"urlencode:hi
world?!\",\"function\":\"urlencode\"},\"params\":{\"1\":{\"wt\":\"PATH\"}},\"i\":0}}]}'
data-parsoid='{\"dsr\":[55,84,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>hi%20world%3F!</span>\n<span
typeof=\"mw:Transclusion\" about=\"#mwt4\" id=\"mwt4\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"urlencode:hi
world?!\",\"function\":\"urlencode\"},\"params\":{\"1\":{\"wt\":\"QUERY\"}},\"i\":0}}]}'
data-parsoid='{\"dsr\":[85,115,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>hi%20world%3F!</span></p>");
add("wt2html", "Nonexistent template", "<p
data-parsoid='{\"dsr\":[0,28,0,0]}'><span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{thistemplatedoesnotexist}}\",\"dsr\":[0,28,null,null]}'>Warning:
Page/template fetching disabled, and no cache for
Template:Thistemplatedoesnotexist</span></p>");
-add("wt2html", "Template with invalid target containing tags", "<p
data-parsoid='{\"dsr\":[0,54,0,0]}'><span typeof=\"mw:Transclusion\"
about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"a<b>b</b>\"},\"params\":{\"1\":{\"wt\":\"{{echo|foo}}\"},\"{{echo|a}}\":{\"wt\":\"{{echo|b}}\"},\"a\":{\"wt\":\"b\"}},\"i\":0}}]}'
data-parsoid='{\"src\":\"{{a<b>b</b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a
=
b}}\",\"dsr\":[0,54,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]},{\"k\":\"{{echo|a}}\",\"named\":true,\"spc\":[\"\",\"\",\"\",\"\"]},{\"k\":\"a\",\"named\":true}]]}'>{{a</span><b
about=\"#mwt1\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[3,11,3,4]}'>b</b><span about=\"#mwt1\"
data-parsoid=\"{}\">|foo|a=b|a =b}}</span></p>");
-add("wt2html", "Template with invalid target containing unclosed tag", "<p
data-parsoid='{\"dsr\":[0,49,0,0]}'><span typeof=\"mw:Transclusion\"
about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"a<b>\"},\"params\":{\"1\":{\"wt\":\"{{echo|foo}}\"},\"{{echo|a}}\":{\"wt\":\"{{echo|b}}\"},\"a\":{\"wt\":\"b\"}},\"i\":0}}]}'
data-parsoid='{\"src\":\"{{a<b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a =
b}}\",\"dsr\":[0,49,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]},{\"k\":\"{{echo|a}}\",\"named\":true,\"spc\":[\"\",\"\",\"\",\"\"]},{\"k\":\"a\",\"named\":true}]]}'>{{a</span><b
about=\"#mwt1\"
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[3,49,3,0]}'>|foo|a=b|a
=b}}</b></p>");
+add("wt2html", "Template with invalid target containing tags", "<p
data-parsoid='{\"dsr\":[0,54,0,0]}'><span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{a<b>b</b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a
= b}}\",\"dsr\":[0,54,null,null]}'>Warning: Page/template fetching disabled,
and no cache for Template:Ab</span></p>");
+add("wt2html", "Template with invalid target containing unclosed tag", "<p
data-parsoid='{\"dsr\":[0,49,0,0]}'><span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{a<b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a =
b}}\",\"dsr\":[0,49,null,null]}'>Warning: Page/template fetching disabled, and
no cache for Template:A</span></p>");
+add("wt2html", "Template with invalid target containing wikilink", "<p
data-parsoid='{\"dsr\":[0,17,0,0]}'><span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{[[Main
Page]]}}\",\"dsr\":[0,17,null,null]}'>Warning: Page/template fetching disabled,
and no cache for Template:Main_Page</span></p>");
add("wt2html", "Template redirect", "<link rel=\"mw:PageProp/redirect\"
href=\"./Template:Templatesimple\" about=\"#mwt1\" typeof=\"mw:Transclusion\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"templateredirect\",\"href\":\"./Template:Templateredirect\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"a\":{\"href\":\"./Template:Templatesimple\"},\"sa\":{\"href\":\"Template:templatesimple\"},\"dsr\":[0,20,null,null],\"pi\":[[]]}'/>");
add("wt2html", "Template with thumb image (with link in description)", "<p
about=\"#mwt1\" typeof=\"mw:Transclusion\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"paramtest\",\"href\":\"./Template:Paramtest\"},\"params\":{\"param\":{\"wt\":\"[[Image:noimage.png|thumb|[[no
link|link]] [[no link|caption]]]]\"}},\"i\":0}}]}'
data-parsoid='{\"dsr\":[0,88,null,null],\"pi\":[[{\"k\":\"param\",\"named\":true,\"spc\":[\"\\n
\",\" \",\"\",\"\"]}]]}'>This is a test template with parameter </p>");
add("wt2html", "Template with complex arguments", "<p
data-parsoid='{\"dsr\":[0,106,0,0]}'><a rel=\"mw:WikiLink\"
href=\"./Template:Complextemplate\" about=\"#mwt1\" typeof=\"mw:Transclusion\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"complextemplate\",\"href\":\"./Template:Complextemplate\"},\"params\":{\"1\":{\"wt\":\"[[Template:complextemplate|link]]\"},\"param\":{\"wt\":\"{{
templateasargtest |\\n templ = simple }}\"}},\"i\":0}}]}'
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Template:Complextemplate\"},\"sa\":{\"href\":\"Template:complextemplate\"},\"dsr\":[0,106,null,null],\"pi\":[[{\"k\":\"param\",\"named\":true,\"spc\":[\"\\n
\",\"
\",\"\",\"\"]},{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>link</a><span
about=\"#mwt1\" data-parsoid=\"{}\"> This is a test template with parameter
(test)</span></p>");
@@ -144,7 +145,7 @@
add("wt2html", "Template infinite loop", "<span about=\"#mwt1\"
typeof=\"mw:Transclusion\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"loop1\",\"href\":\"./Template:Loop1\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"dsr\":[0,9,null,null],\"pi\":[[]]}'></span>");
add("wt2html", "BUG 529: Template with table, not included at beginning of
line", "foo <table about=\"#mwt1\" typeof=\"mw:Transclusion\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"table\",\"href\":\"./Template:Table\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"dsr\":[4,13,null,null],\"pi\":[[]]}'>\n<tbody
data-parsoid=\"{}\"><tr data-parsoid=\"{}\"><td data-parsoid=\"{}\"> 1 </td><td
data-parsoid='{\"stx_v\":\"row\"}'> 2</td></tr>\n<tr
data-parsoid='{\"startTagSrc\":\"|-\"}'>\n<td data-parsoid=\"{}\"> 3 </td><td
data-parsoid='{\"stx_v\":\"row\"}'> 4</td></tr>\n</tbody></table>");
add("wt2html", "BUG 41: Template parameters shown as broken links", "<p
data-parsoid='{\"dsr\":[0,15,0,0]}'><span typeof=\"mw:Param\" about=\"#mwt1\"
id=\"mwt1\"
data-parsoid='{\"src\":\"{{{parameter}}}\",\"dsr\":[0,15,null,null]}'>{{{parameter}}}</span></p>");
-add("wt2html", "Template with targets containing wikilinks", "<p
data-parsoid='{\"dsr\":[0,11,0,0]}'><span typeof=\"mw:Transclusion\"
about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"[[foo]]\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"src\":\"{{[[foo]]}}\",\"dsr\":[0,11,null,null],\"pi\":[[]]}'>{{</span><a
rel=\"mw:WikiLink\" href=\"./Foo\" about=\"#mwt1\"
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"foo\"},\"dsr\":[2,9,2,2]}'>foo</a><span
about=\"#mwt1\" data-parsoid=\"{}\">}}</span></p>\n\n<p
data-parsoid='{\"dsr\":[13,33,0,0]}'><span typeof=\"mw:Transclusion\"
about=\"#mwt2\" id=\"mwt2\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"[[{{echo|foo}}]]\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"dsr\":[13,33,null,null],\"pi\":[[]]}'>{{</span><a
rel=\"mw:WikiLink\" href=\"./Foo\" about=\"#mwt2\"
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Foo\"},\"sa\":{\"href\":\"{{echo|foo}}\"},\"dsr\":[15,31,2,2]}'>foo</a><span
about=\"#mwt2\" data-parsoid=\"{}\">}}</span></p>\n\n<p
data-parsoid='{\"dsr\":[35,55,0,0]}'><span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{{{echo|[[foo}}]]}}\",\"dsr\":[35,55,null,null]}'>Warning:
Page/template fetching disabled, and no cache for
Template:[[foo]]</span></p>");
+add("wt2html", "Template with targets containing wikilinks", "<p
about=\"#mwt1\" typeof=\"mw:Transclusion\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"[[foo]]\",\"href\":\"./Template:Foo\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"dsr\":[0,11,null,null],\"pi\":[[]]}'>FOO</p>\n\n<p
about=\"#mwt2\" typeof=\"mw:Transclusion\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"[[{{echo|foo}}]]\",\"href\":\"./Template:Foo\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"dsr\":[13,33,null,null],\"pi\":[[]]}'>FOO</p>\n\n<p
data-parsoid='{\"dsr\":[35,55,0,0]}'><span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{{{echo|[[foo}}]]}}\",\"dsr\":[35,55,null,null]}'>Warning:
Page/template fetching disabled, and no cache for
Template:[[foo]]</span></p>");
add("wt2html", "msgnw keyword", "<p data-parsoid='{\"dsr\":[0,20,0,0]}'><span
typeof=\"mw:Placeholder\" data-parsoid='{\"src\":\"{{msgnw:MSGNW
test}}\",\"dsr\":[0,20,null,null]}'>Warning: Page/template fetching disabled,
and no cache for Msgnw:MSGNW_test</span></p>");
add("wt2html", "int keyword", "<p data-parsoid='{\"dsr\":[0,45,0,0]}'><span
typeof=\"mw:Transclusion\" about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"int:youhavenewmessages\",\"function\":\"int\"},\"params\":{\"1\":{\"wt\":\"lots
of money\"},\"2\":{\"wt\":\"not!\"}},\"i\":0}}]}'
data-parsoid='{\"src\":\"{{int:youhavenewmessages|lots of
money|not!}}\",\"dsr\":[0,45,null,null],\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]},{\"k\":\"2\",\"spc\":[\"\",\"\",\"\",\"\"]}]]}'>Parser
function implementation for pf_int missing in Parsoid.</span></p>");
add("wt2html", "<onlyinclude> being included", "<p
data-parsoid='{\"dsr\":[0,13,0,0]}'><span typeof=\"mw:Transclusion\"
about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"Includes2\",\"href\":\"./Template:Includes2\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"src\":\"{{Includes2}}\",\"dsr\":[0,13,null,null],\"pi\":[[]]}'>Foo</span><meta
typeof=\"mw:Includes/OnlyInclude/End\" about=\"#mwt1\"
data-parsoid='{\"src\":\"\",\"dsr\":[13,null]}'/></p>");
@@ -408,7 +409,7 @@
add("wt2html", "Don't break list handling if language converter markup is in
the item.", "<dl data-parsoid='{\"dsr\":[0,24,0,0]}'><dt
data-parsoid='{\"dsr\":[0,8,1,0]}'>-{zh-cn</dt><dd
data-parsoid='{\"stx\":\"row\",\"dsr\":[8,24,1,0]}'>AAA;zh-tw:BBB}-</dd></dl>");
add("wt2html", "Don't break table handling if language converter markup is in
the cell.", "<table data-parsoid='{\"dsr\":[0,18,2,2]}'>\n<tbody
data-parsoid='{\"dsr\":[3,16,0,0]}'><tr
data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[3,15,2,0]}'>\n<td
data-parsoid='{\"a\":{\"-{R\":null},\"sa\":{\"-{R\":\"\"},\"autoInsertedEnd\":true,\"dsr\":[6,15,6,0]}'>B}-</td></tr>\n</tbody></table>");
add("wt2html", "Bug 529: Uncovered bullet in parser function result", "<ul
data-parsoid='{\"dsr\":[0,24,0,0]}'><li data-parsoid='{\"dsr\":[0,24,1,0]}'>
Foo <span typeof=\"mw:Transclusion\" about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"lc:{{bullet}}
\",\"function\":\"lc\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"dsr\":[6,24,null,null],\"pi\":[[]]}'> bar</span></li></ul>");
-add("wt2html", "Bug 5678: Double-parsed template invocation", "<p
data-parsoid='{\"dsr\":[0,42,0,0]}'><span typeof=\"mw:Transclusion\"
about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"lc:{{paramtest {{!}}
param = hello }} \",\"function\":\"lc\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"src\":\"{{lc:{{paramtest {{!}} param = hello }}
}}\",\"dsr\":[0,42,null,null],\"pi\":[[]]}'>{{paramtest param = hello
}}</span></p>");
+add("wt2html", "Bug 5678: Double-parsed template invocation", "<p
data-parsoid='{\"dsr\":[0,42,0,0]}'><span typeof=\"mw:Transclusion\"
about=\"#mwt1\" id=\"mwt1\"
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"lc:{{paramtest {{!}}
param = hello }} \",\"function\":\"lc\"},\"params\":{},\"i\":0}}]}'
data-parsoid='{\"src\":\"{{lc:{{paramtest {{!}} param = hello }}
}}\",\"dsr\":[0,42,null,null],\"pi\":[[]]}'>warning: page/template fetching
disabled, and no cache for template:paramtest_param_=_hello</span></p>");
add("wt2html", "Case insensitivity of parser functions for non-ASCII
characters (bug 8143)", "<p data-parsoid='{\"dsr\":[0,135,0,0]}'><span
typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{PRVNÍVELKÉ:ěščř}}\",\"dsr\":[0,19,null,null]}'>Warning:
Page/template fetching disabled, and no cache for
PRVNÍVELKÉ:ěščř</span>\n<span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{prvnívelké:ěščř}}\",\"dsr\":[20,39,null,null]}'>Warning:
Page/template fetching disabled, and no cache for
Prvnívelké:ěščř</span>\n<span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{PRVNÍMALÉ:ěščř}}\",\"dsr\":[40,58,null,null]}'>Warning:
Page/template fetching disabled, and no cache for PRVNÍMALÉ:ěščř</span>\n<span
typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{prvnímalé:ěščř}}\",\"dsr\":[59,77,null,null]}'>Warning:
Page/template fetching disabled, and no cache for Prvnímalé:ěščř</span>\n<span
typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{MALÁ:ěščř}}\",\"dsr\":[78,91,null,null]}'>Warning:
Page/template fetching disabled, and no cache for MALÁ:ěščř</span>\n<span
typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{malá:ěščř}}\",\"dsr\":[92,105,null,null]}'>Warning:
Page/template fetching disabled, and no cache for Malá:ěščř</span>\n<span
typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{VELKÁ:ěščř}}\",\"dsr\":[106,120,null,null]}'>Warning:
Page/template fetching disabled, and no cache for VELKÁ:ěščř</span>\n<span
typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{velká:ěščř}}\",\"dsr\":[121,135,null,null]}'>Warning:
Page/template fetching disabled, and no cache for Velká:ěščř</span></p>");
add("wt2html", "Nesting tags, paragraphs on lines which begin with <div>",
"<div data-parsoid='{\"stx\":\"html\",\"dsr\":[0,11,5,6]}'></div><strong
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[11,20,8,0]}'>A</strong>\n<p
data-parsoid='{\"dsr\":[21,31,0,0]}'><strong
data-parsoid='{\"stx\":\"html\",\"autoInsertedStart\":true,\"dsr\":[21,31,0,9]}'>B</strong></p>");
add("wt2html", "Free external link invading image caption", "<figure
class=\"mw-default-size\" typeof=\"mw:Image/Thumb\"
data-parsoid='{\"optList\":[{\"ck\":\"thumbnail\",\"ak\":\"thumb\"},{\"ck\":\"bogus\",\"ak\":\"http://x\"},{\"ck\":\"caption\",\"ak\":\"hello\"}],\"dsr\":[0,41,2,2]}'><a
href=\"./File:Foobar.jpg\"
data-parsoid='{\"a\":{\"href\":\"./File:Foobar.jpg\"},\"dsr\":[2,null,null,null]}'><img
resource=\"./File:Foobar.jpg\"
src=\"//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg\"
height=\"25\" width=\"220\"
data-parsoid='{\"a\":{\"resource\":\"./File:Foobar.jpg\",\"height\":\"25\",\"width\":\"220\"},\"sa\":{\"resource\":\"Image:Foobar.jpg\"}}'/></a><figcaption
data-parsoid='{\"dsr\":[null,39,null,null]}'>hello</figcaption></figure>");
@@ -790,6 +791,7 @@
add("html2html", "Magic links: internal link to RFC (bug 479)", "<p
data-parsoid='{\"dsr\":[0,135,0,0]}'><a
href=\"/index.php?title=RFC_123&action=edit&redlink=1\" class=\"new\"
title=\"RFC 123 (page does not exist)\"><span typeof=\"mw:Nowiki\"
data-parsoid='{\"dsr\":[107,131,8,9]}'>RFC 123</span></a></p>\n");
add("html2html", "Magic links: ISBN (bug 1937)", "<p
data-parsoid='{\"dsr\":[0,57,0,0]}'>[/wiki/Special:BookSources/0306406152 <a
href=\"./Special:BookSources/0306406152\" rel=\"mw:ExtLink\"
data-parsoid='{\"stx\":\"protocol\",\"dsr\":[38,56,0,0]}'>ISBN
0-306-40615-2</a>]</p>\n");
add("html2html", "Nonexistent template", "<p
data-parsoid='{\"dsr\":[0,196,0,0]}'><a
href=\"/index.php?title=Template:Thistemplatedoesnotexist&action=edit&redlink=1\"
class=\"new\" title=\"Template:Thistemplatedoesnotexist (page does not
exist)\">Template:Thistemplatedoesnotexist</a></p>\n");
+add("html2html", "Template with invalid target containing wikilink", "<p
data-parsoid='{\"dsr\":[0,17,0,0]}'><span typeof=\"mw:Placeholder\"
data-parsoid='{\"src\":\"{{[[Main
Page]]}}\",\"dsr\":[0,17,null,null]}'>Warning: Page/template fetching disabled,
and no cache for Template:Main_Page</span></p>\n");
add("html2html", "Template unnamed parameter", "<p
data-parsoid='{\"dsr\":[0,61,0,0]}'><a href=\"/wiki/Main_Page\" title=\"Main
Page\">the main page</a></p>\n");
add("html2html", "Template with thumb image (with link in description)", "This
is a test template with parameter <div class=\"thumb tright\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[39,512,26,6]}'><div
class=\"thumbinner\" style=\"width:182px;\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[65,506,45,6]}'><a
href=\"/index.php?title=Special:Upload&wpDestFile=Noimage.png\"
class=\"new\" title=\"File:Noimage.png\">File:Noimage.png</a> <div
class=\"thumbcaption\"
data-parsoid='{\"stx\":\"html\",\"dsr\":[234,500,26,6]}'><a
href=\"/index.php?title=No_link&action=edit&redlink=1\" class=\"new\"
title=\"No link (page does not exist)\">link</a> <a
href=\"/index.php?title=No_link&action=edit&redlink=1\" class=\"new\"
title=\"No link (page does not exist)\">caption</a></div></div></div>\n");
add("html2html", "Template with complex arguments", "<p
data-parsoid='{\"dsr\":[0,128,0,0]}'><a
href=\"/wiki/Template:Complextemplate\"
title=\"Template:Complextemplate\">link</a> This is a test template with
parameter (test)</p>\n");
@@ -2842,9 +2844,6 @@
add("selser", "Template as link source [0,0,0,4,[0,3]]",
"[[{{linktest2}}]]\n\n[[{{linktest2}}|Main
Page]]1jdkk1elzz9nqaor\n[[{{linktest2}}]]\n");
add("selser", "Template as link source [0,2,0,4,[0,2]]",
"[[{{linktest2}}]]65jfilddxu2chaor\n\n[[{{linktest2}}|Main
Page]]cu4isvklz0k9\n[[{{linktest2}}]]<nowiki/>rle9sucdvkju4n29Page");
add("selser", "Template as link source [0,0,0,4,1]",
"[[{{linktest2}}]]\n\n[[{{linktest2}}|Main
Page]]2t6j0ntzmy4x6r\n[[{{linktest2}}]]Page");
-add("selser", "Template with targets containing wikilinks [0,4,0,0,3]",
"{{[[foo]]}}340gvnbe2k7nl8fr\n{{[[{{echo|foo}}]]}}\n");
-add("selser", "Template with targets containing wikilinks [0,0,0,4,1]",
"{{[[foo]]}}\n\n{{[[{{echo|foo}}]]}}64n4q61ewllyp66r\n{{{{echo|[[foo}}]]}}");
-add("selser", "Template with targets containing wikilinks [2,3,2,0,0]",
"jn3l3gn2shlac3di\n\n{{[[foo]]}}eps1xdvsq62vgqfr\n{{[[{{echo|foo}}]]}}\n\n{{{{echo|[[foo}}]]}}");
add("selser", "2. includeonly in html attr value [[0,3,0]]", "<span
id=\"<noinclude>v1</noinclude><includeonly>v2</includeonly>\">bar</span><span
id=<noinclude>\"v1\"</noinclude><includeonly>\"v2\"</includeonly>>bar</span>");
add("selser", "2. includeonly in html attr value [[0,4,0]]", "<span
id=\"<noinclude>v1</noinclude><includeonly>v2</includeonly>\">bar</span>3qendv6zaaif6r<span
id=<noinclude>\"v1\"</noinclude><includeonly>\"v2\"</includeonly>>bar</span>");
add("selser", "2. includeonly in html attr value [2]",
"u352zdrjeccsdcxr\n\n<span
id=\"<noinclude>v1</noinclude><includeonly>v2</includeonly>\">bar</span>\n<span
id=<noinclude>\"v1\"</noinclude><includeonly>\"v2\"</includeonly>>bar</span>");
--
To view, visit https://gerrit.wikimedia.org/r/119540
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I590b8675ea82c1d2b305dee750a4c378febfec07
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits