Arlolra has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/223603

Change subject: Context
......................................................................

Context

Change-Id: Iab988c9fb28d6191ef22fdd9a7adac50907ac75b
---
M lib/wts.TagHandlers.js
M tests/parserTests-blacklist.js
2 files changed, 27 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/03/223603/1

diff --git a/lib/wts.TagHandlers.js b/lib/wts.TagHandlers.js
index 2f773ab..444ff43 100644
--- a/lib/wts.TagHandlers.js
+++ b/lib/wts.TagHandlers.js
@@ -505,7 +505,9 @@
                                cb(getListBullets(state, node), node);
                        }
                        var liHandler = 
state.serializer.wteHandlers.liHandler.bind(state.serializer.wteHandlers, node);
+                       state.singleLineContext.enforce();
                        state.serializeChildren(node, cb, liHandler);
+                       state.singleLineContext.pop();
                },
                sepnls: {
                        before: id({min: 1, max: 2}),
@@ -529,16 +531,24 @@
        dd: {
                handle: function(node, state, cb) {
                        var firstChildElement = DU.firstNonSepChildNode(node);
+                       var isRow = false;
                        if (!DU.isList(firstChildElement) || 
isTplListWithoutSharedPrefix(firstChildElement)) {
                                // XXX: handle stx: row
                                if ( DU.getDataParsoid( node ).stx === 'row' ) {
+                                       isRow = true;
                                        cb(':', node);
                                } else {
                                        cb(getListBullets(state, node), node);
                                }
                        }
                        var liHandler = 
state.serializer.wteHandlers.liHandler.bind(state.serializer.wteHandlers, node);
-                       state.serializeChildren(node, cb, liHandler);
+                       if (true || isRow) {
+                               state.singleLineContext.enforce();
+                               state.serializeChildren(node, cb, liHandler);
+                               state.singleLineContext.pop();
+                       } else {
+                               state.serializeChildren(node, cb, liHandler);
+                       }
                },
                sepnls: {
                        before: function(node, othernode) {
@@ -566,6 +576,11 @@
                handle: function(node, state, cb, wrapperUnmodified) {
                        var dp = DU.getDataParsoid( node );
                        var wt = dp.startTagSrc || "{|";
+                       var indentTable = node.parentNode.nodeName === 'DD' &&
+                                       true; // DU.previousNonSepSibling(node) 
=== null;
+                       if (indentTable) {
+                               state.singleLineContext.disable();
+                       }
                        cb(serializeTableTag(wt, '', state, node, 
wrapperUnmodified), node);
                        if (!DU.isLiteralHTMLNode(node)) {
                                state.wikiTableNesting++;
@@ -582,6 +597,9 @@
                                state.sep.constraints = {a: {}, b: {}, min: 1, 
max: 2};
                        }
                        WTSUtils.emitEndTag( dp.endTagSrc || "|}", node, state, 
cb );
+                       if (indentTable) {
+                               state.singleLineContext.pop();
+                       }
                },
                sepnls: {
                        before: function(node, otherNode) {
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index c947ac9..e563937 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -562,7 +562,7 @@
 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&amp;action=edit&amp;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");
-add("html2html", "Definition Lists: colons occurring in tags", "\n<dl 
data-parsoid='{\"dsr\":[1,73,0,0]}'><dt data-parsoid='{\"dsr\":[1,4,1,0]}'> 
a</dt>\n<dd data-parsoid='{\"dsr\":[5,8,1,0]}'> b</dd>\n<dt 
data-parsoid='{\"dsr\":[9,20,1,0]}'> <b 
data-parsoid='{\"dsr\":[11,20,3,3]}'>a:b</b></dt>\n<dt 
data-parsoid='{\"dsr\":[21,30,1,0]}'> <i 
data-parsoid='{\"dsr\":[23,30,2,2]}'>a:b</i></dt>\n<dt 
data-parsoid='{\"dsr\":[31,49,1,0]}'> <span 
data-parsoid='{\"stx\":\"html\",\"dsr\":[33,49,6,7]}'>a:b</span></dt>\n<dd 
data-parsoid='{\"dsr\":[50,65,1,0]}'><div 
data-parsoid='{\"stx\":\"html\",\"dsr\":[51,65,5,6]}'>a:b</div></dd>\n<dd 
data-parsoid='{\"dsr\":[66,73,1,0]}'><div 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[67,73,5,0]}'>a</div></dd></dl>\n\n<dl
 data-parsoid='{\"dsr\":[75,78,0,0]}'><dd data-parsoid='{\"dsr\":[75,78,1,0]}'> 
b</dd></dl>\n\n\n<dl data-parsoid='{\"dsr\":[87,104,0,0]}'><dt 
data-parsoid='{\"dsr\":[87,90,1,0]}'> a</dt>\n<dd 
data-parsoid='{\"dsr\":[91,94,1,0]}'> b</dd>\n<dt 
data-parsoid='{\"dsr\":[95,104,1,0]}'> <i 
data-parsoid='{\"dsr\":[97,104,2,2]}'>a:b</i></dt></dl>\n\n<dl 
data-parsoid='{\"dsr\":[106,117,0,0]}'><dd 
data-parsoid='{\"dsr\":[106,117,1,0]}'><dl 
data-parsoid='{\"dsr\":[107,117,0,0]}'><dd 
data-parsoid='{\"dsr\":[107,117,1,0]}'><dl 
data-parsoid='{\"dsr\":[108,117,0,0]}'><dt 
data-parsoid='{\"dsr\":[108,117,1,0]}'> <i 
data-parsoid='{\"dsr\":[110,117,2,2]}'>a:b</i></dt></dl></dd></dl></dd></dl>\n");
+add("html2html", "Definition Lists: colons occurring in tags", "\n<dl 
data-parsoid='{\"dsr\":[1,73,0,0]}'><dt data-parsoid='{\"dsr\":[1,4,1,0]}'> 
a</dt>\n<dd data-parsoid='{\"dsr\":[5,8,1,0]}'> b</dd>\n<dt 
data-parsoid='{\"dsr\":[9,20,1,0]}'> <b 
data-parsoid='{\"dsr\":[11,20,3,3]}'>a:b</b></dt>\n<dt 
data-parsoid='{\"dsr\":[21,30,1,0]}'> <i 
data-parsoid='{\"dsr\":[23,30,2,2]}'>a:b</i></dt>\n<dt 
data-parsoid='{\"dsr\":[31,49,1,0]}'> <span 
data-parsoid='{\"stx\":\"html\",\"dsr\":[33,49,6,7]}'>a:b</span></dt>\n<dd 
data-parsoid='{\"dsr\":[50,65,1,0]}'><div 
data-parsoid='{\"stx\":\"html\",\"dsr\":[51,65,5,6]}'>a:b</div></dd>\n<dd 
data-parsoid='{\"dsr\":[66,73,1,0]}'><div 
data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[67,73,5,0]}'>a</div></dd></dl>\n\n<dl
 data-parsoid='{\"dsr\":[75,80,0,0]}'><dd data-parsoid='{\"dsr\":[75,80,1,0]}'> 
b  </dd></dl>\n<dl data-parsoid='{\"dsr\":[87,104,0,0]}'><dt 
data-parsoid='{\"dsr\":[87,90,1,0]}'> a</dt>\n<dd 
data-parsoid='{\"dsr\":[91,94,1,0]}'> b</dd>\n<dt 
data-parsoid='{\"dsr\":[95,104,1,0]}'> <i 
data-parsoid='{\"dsr\":[97,104,2,2]}'>a:b</i></dt></dl>\n\n<dl 
data-parsoid='{\"dsr\":[106,117,0,0]}'><dd 
data-parsoid='{\"dsr\":[106,117,1,0]}'><dl 
data-parsoid='{\"dsr\":[107,117,0,0]}'><dd 
data-parsoid='{\"dsr\":[107,117,1,0]}'><dl 
data-parsoid='{\"dsr\":[108,117,0,0]}'><dt 
data-parsoid='{\"dsr\":[108,117,1,0]}'> <i 
data-parsoid='{\"dsr\":[110,117,2,2]}'>a:b</i></dt></dl></dd></dl></dd></dl>\n");
 add("html2html", "Definition Lists: colons and tables 1", "<dl 
data-parsoid='{\"dsr\":[0,26,0,0]}'><dd data-parsoid='{\"dsr\":[0,12,1,0]}'> 
<table data-parsoid='{\"dsr\":[2,12,2,2]}'>\n\n<tbody 
data-parsoid='{\"dsr\":[6,10,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[6,9,0,0]}'><td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[6,9,1,0]}'> 
x</td></tr>\n</tbody></table></dd>\n\n<dd data-parsoid='{\"dsr\":[14,26,1,0]}'> 
<table data-parsoid='{\"dsr\":[16,26,2,2]}'>\n\n<tbody 
data-parsoid='{\"dsr\":[20,24,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[20,23,0,0]}'><td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[20,23,1,0]}'> 
y</td></tr>\n</tbody></table></dd></dl>\n");
 add("html2html", "Indented table markup mixed with indented pre content 
(proposed in bug 6200)", " <table 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[1,58,2,0]}'>\n \n <tbody 
data-parsoid='{\"dsr\":[7,58,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[7,58,0,0]}'><td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[7,58,1,0]}'>\n<pre 
data-parsoid='{\"dsr\":[9,58,1,0]}'>Text that should be rendered preformatted 
\n\n|}</pre></td></tr></tbody></table>\n");
 add("html2html", "Build table with wikilink", "<table class=\"wikitable\" 
data-parsoid='{\"dsr\":[0,216,20,2]}'>\n\n<tbody 
data-parsoid='{\"dsr\":[22,214,0,0]}'><tr 
data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[22,47,0,0]}'><th
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[22,31,1,0]}'> header 
</th>\n<th data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[32,47,1,0]}'> 
second header</th></tr>\n\n<tr style=\"color:red;\" 
data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[49,148,21,0]}'>\n<td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[71,106,1,0]}'> data <a 
rel=\"mw:WikiLink\" href=\"./Wiki/Main_Page\" title=\"Wiki/Main Page\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Main_Page\"},\"sa\":{\"href\":\"wiki/Main
 Page\"},\"dsr\":[78,105,17,2]}'>linktext</a> </td>\n<td 
data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[107,148,1,0]}'> second data <a 
rel=\"mw:WikiLink\" href=\"./Wiki/Main_Page\" title=\"Wiki/Main Page\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Main_Page\"},\"sa\":{\"href\":\"wiki/Main
 Page\"},\"dsr\":[121,148,17,2]}'>linktext</a></td></tr>\n\n<tr 
data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[150,213,2,0]}'>\n<td
 data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[153,160,1,0]}'> data 
</td>\n<td data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[161,213,1,0]}'> 
second data <a rel=\"mw:WikiLink\" href=\"./Wiki/Main_Page\" title=\"Wiki/Main 
Page\" 
data-parsoid='{\"stx\":\"piped\",\"a\":{\"href\":\"./Wiki/Main_Page\"},\"sa\":{\"href\":\"wiki/Main
 Page\"},\"dsr\":[175,213,17,2]}'>link|text with 
pipe</a></td></tr>\n</tbody></table>\n");
@@ -1003,7 +1003,7 @@
 add("html2wt", "Definition Lists: Mixed Lists: Test 10", "*#; foo \n*#: 
bar\n");
 add("html2wt", "Definition Lists: Mixed Lists: Test 11", "\n*#*#;*;; foo 
:bar\n*#*#; boo :baz\n");
 add("html2wt", "Definition Lists: Weird Ones: Test 1", "\n*#;*::;; foo : bar 
(who uses this?)\n");
-add("html2wt", "Definition Lists: colons occurring in tags", "\n; a\n: b\n; 
'''a:b'''\n; ''a:b''\n; <span>a:b</span>\n:<div>a:b</div>\n:<div>a\n\n: 
b\n\n</div>\n; a\n: b\n; ''a:b''\n\n::; ''a:b''\n");
+add("html2wt", "Definition Lists: colons occurring in tags", "\n; a\n: b\n; 
'''a:b'''\n; ''a:b''\n; <span>a:b</span>\n:<div>a:b</div>\n:<div>a\n\n: b  
</div>\n; a\n: b\n; ''a:b''\n\n::; ''a:b''\n");
 add("html2wt", "Definition Lists: colons and tables 1", ": {|\n\n| x\n|}\n\n: 
{|\n\n| y\n|}\n");
 add("html2wt", "Definition Lists: colons and tables 2", ": {|\n\n| x\n|}\n: 
{|\n\n| y\n|}\n");
 add("html2wt", "External links: Free with trailing punctuation", 
"http://example.com,\nhttp://example.com;\nhttp://example.com\\\nhttp://example.com.\nhttp://example.com:\nhttp://example.com!\nhttp://example.com?\nhttp://example.com)\nhttp://example.com/url_with_(brackets)\n(http://example.com/url_without_brackets)\nhttp://example.com/url_with_entity&nbsp;\nhttp://example.com/url_with_entity&nbsp;\nhttp://example.com/url_with_entity&nbsp;\nhttp://example.com/url_with_entity<nowiki/>&#x3C;\nhttp://example.com/url_with_entity&#x3C;\nhttp://example.com/url_with_entity&#x3C;\n";);
@@ -1839,6 +1839,12 @@
 add("selser", "Definition Lists: colons occurring in tags 
[[3,[4],0,[[2]],4,0,4,[4],0,[[2]],2,[[4]],2,0,0,0,0,4]]", 
":5lkbigrdwdx11yvi\n;'''cqslr7dvsnd5z5mia:b'''\n: 
masspab3x9don7b9\n;<i>a:b</i>\n: 
oa29nopebnoy9zfr\n;98d7as2k961ug14i\n;<div>1bwhvaem3l0izfra:b</div>\n: 
vnpj9u2knmmzehfr\n;<div>zv7k43lu5scq5mi\n: 
1f68p993haor\n:b</div>\n;{{echo|a:b}}\n: hxhtxsqncdi");
 add("selser", "Definition Lists: colons occurring in tags 
[[0,0,4,[2],3,[4],0,[[3]],4,[[3]],0,2,3,0,0,0,0,[0,0,1]]]", ";a:b\n: 
h3264ujrqrkq33di\n;h56kdmfdrrv34n29'''a:b'''\n;fxo6p8aww4p9zfr\n;<span></span>\n:
 h438k9e0o3aexw29\n;<div></div>\n: 
diwu40dj1dims4i\n;<div>a\n:b</div>\n;{{echo|a:b}}\n;{{echo|''a:b''}}\n;;;''a:b''");
 add("selser", "Definition Lists: colons occurring in tags [1]", 
";a:b\n;'''a:b'''\n;<i>a:b</i>\n;<span>a:b</span>\n;<div>a:b</div>\n;<div>a\n:b</div>\n;{{echo|a:b}}\n;{{echo|''a:b''}}\n;;;''a:b''");
+add("selser", "Definition Lists: template interaction [[2],4,[3]]", ": 
fhmam5fy8tsgiudi\n::{{definition_list}}\nmdbj1ap0nlba9k9\n");
+add("selser", "Definition Lists: template interaction [[2],0,1]", ": 
6tno4vwr15tp4x6r\n::{{definition_list}}\n\n:one\n::{{definition_list}}\n:::two\n:::three\n::four");
+add("selser", "Definition Lists: template interaction [[2],4,4]", ": 
cx9229zg50khjjor\n::{{definition_list}}\ns3c1hwrvl262mx6r\n\nrgau1w5fm9529\n");
+add("selser", "Definition Lists: template interaction [2,0,3]", 
"vm4ub34eb3ej0pb9\n::{{definition_list}}\n");
+add("selser", "Definition Lists: template interaction [2,2,4]", 
"kmod6mh9sjaif6r\n::{{definition_list}}\nbe75tgv7lksp2e29\n\nx0t3zoho6d48ia4i\n");
+add("selser", "Definition Lists: template interaction [2,2,1]", 
"vkpanwv1uhzlrf6r\n::{{definition_list}}\nawinsivdpgxbhuxr\n\n:one\n::{{definition_list}}\n:::two\n:::three\n::four");
 add("selser", "BUG 289: \">\"-token in bracketed URL [2]", 
"ll0lxyd1rfgpsyvi\n\n[http://www.example.com/<hello> stuff]");
 add("selser", "BUG 289: \">\"-token in bracketed URL [1]", 
"[http://www.example.com/<hello> stuff]");
 add("selser", "BUG 289: \">\"-token in bracketed URL [[2]]", 
"kemi29jie4b1emi[http://www.example.com/<hello> stuff]");

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iab988c9fb28d6191ef22fdd9a7adac50907ac75b
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

Reply via email to