Cscott has uploaded a new change for review.

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

Change subject: WIP: T107435: Properly escape non-block image captions during 
WTS.
......................................................................

WIP: T107435: Properly escape non-block image captions during WTS.

Change-Id: I19e860c5d1e24b260c5a2c2b7fd177ee8b3d530e
---
M lib/wts.LinkHandler.js
M tests/mocha/jsapi.js
M tests/parserTests.txt
3 files changed, 22 insertions(+), 4 deletions(-)


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

diff --git a/lib/wts.LinkHandler.js b/lib/wts.LinkHandler.js
index 6100f24..03cddd1 100644
--- a/lib/wts.LinkHandler.js
+++ b/lib/wts.LinkHandler.js
@@ -772,12 +772,16 @@
 
        // Reconstruct the caption
        var caption = null;
+       if (!captionElt && outerElt && typeof DU.getDataMw(outerElt).caption 
=== 'string') {
+               captionElt = outerElt.ownerDocument.createElement('div');
+               captionElt.innerHTML = DU.getDataMw(outerElt).caption;
+               // Needs a parent node in order for WTS to be happy
+               
outerElt.ownerDocument.createElement('div').appendChild(captionElt);
+       }
        if (captionElt) {
                state.inCaption = true;
                caption = state.serializeChildrenToString(captionElt, 
this.wteHandlers.wikilinkHandler, false);
                state.inCaption = false;
-       } else if (outerElt) {
-               caption = DU.getDataMw(outerElt).caption;
        }
 
        // Fetch the alt (if any)
diff --git a/tests/mocha/jsapi.js b/tests/mocha/jsapi.js
index a0645c7..4a1917c 100644
--- a/tests/mocha/jsapi.js
+++ b/tests/mocha/jsapi.js
@@ -193,8 +193,7 @@
                        String(images[1].caption).should.equal('caption');
                        images[0].caption = '|';
                        images[1].caption = null;
-                       // XXX Bug T107435
-                       // 
String(pdoc).should.equal('[[File:SomeFile1.jpg|<nowiki>|</nowiki>]] 
[[File:SomeFile2.jpg|thumb]]');
+                       
String(pdoc).should.equal('[[File:SomeFile1.jpg|<nowiki>|</nowiki>]] 
[[File:SomeFile2.jpg|thumb]]');
                        images[0].caption = null;
                        images[1].caption = '|';
                        String(pdoc).should.equal('[[File:SomeFile1.jpg]] 
[[File:SomeFile2.jpg|thumb|<nowiki>|</nowiki>]]');
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 94e7268..719fd58 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -12518,6 +12518,21 @@
 !! end
 
 !! test
+Escaping non-block captions (T107435)
+!! options
+parsoid={
+  "modes": ["wt2wt"],
+  "changes": [
+    ["[typeof~='mw:Image']", "attr", "data-mw", "{\"caption\": \"|\"}"]
+  ]
+}
+!! wikitext
+[[Image:Foobar.jpg|caption]]
+!! wikitext/edited
+[[Image:Foobar.jpg|<nowiki>|</nowiki>]]
+!! end
+
+!! test
 Image with link parameter, wgExternalLinkTarget
 !! wikitext
 [[Image:foobar.jpg|link=http://example.com/]]

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I19e860c5d1e24b260c5a2c2b7fd177ee8b3d530e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to