jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/351874 )

Change subject: Tweak (shadow info handling + title attribute) for [[Media:..]]
......................................................................


Tweak (shadow info handling + title attribute) for [[Media:..]]

* href for a-tags is derived from the filename and so target.value
  should also be derived from the filename.

* Since setShadowInfo has the smarts to set/ignore shadows for when
  they are identical, get rid of the conditional in wt2html mode.

* title attributes should have '_' normalized to ' ', it appears.

* Updated parser tests.

Change-Id: I35bcb309346a672b8d636de9defef33c2e3eee18
---
M lib/html2wt/LinkHandler.js
M lib/wt2html/tt/LinkHandler.js
M tests/parserTests.txt
3 files changed, 15 insertions(+), 13 deletions(-)

Approvals:
  jenkins-bot: Verified
  Arlolra: Looks good to me, approved



diff --git a/lib/html2wt/LinkHandler.js b/lib/html2wt/LinkHandler.js
index 1130fd1..ae16be1 100644
--- a/lib/html2wt/LinkHandler.js
+++ b/lib/html2wt/LinkHandler.js
@@ -238,8 +238,9 @@
                        }
 
                        // Unless edited, get original shadowed info for 
'fileName'
-                       var fnInfo = DU.getShadowInfo(node, 'fileName', 
rtData.href.replace(/.*\//, ''));
-                       rtData.target.value = rtData.href = mediaPrefix + ":" + 
fnInfo.value;
+                       // and update rtData.target. href/target is derived 
from the file name.
+                       rtData.target = DU.getShadowInfo(node, 'fileName', 
rtData.href.replace(/.*\//, ''));
+                       rtData.target.value = rtData.href = mediaPrefix + ":" + 
rtData.target.value;
                }
 
                return rtData;
diff --git a/lib/wt2html/tt/LinkHandler.js b/lib/wt2html/tt/LinkHandler.js
index d3b53cb..c47fcc9 100644
--- a/lib/wt2html/tt/LinkHandler.js
+++ b/lib/wt2html/tt/LinkHandler.js
@@ -470,7 +470,8 @@
 
        // Add title unless it's just a fragment
        if (target.href[0] !== '#') {
-               newTk.setAttribute('title', 
target.title.getPrefixedDBKey().replace(/_/g, " "));
+               // Normalize title according to how PHP parser does it currently
+               newTk.setAttribute('title', 
target.title.getPrefixedDBKey().replace(/_/g, ' '));
        }
 
        cb({ tokens: [newTk].concat(content, [new EndTagTk('a')]) });
@@ -1823,9 +1824,8 @@
        var link = new TagTk('a', [], Util.clone(token.dataAttribs));
        link.addAttribute('rel', 'mw:Media');
        link.addAttribute('href', imgHref);
-       link.setAttribute('title',
-               // Ugliness galore!
-               imgHrefFileName.replace(/_/g, ' ') === fileName.replace(/_/g, ' 
') ? fileName : imgHrefFileName);
+       // Normalize title according to how PHP parser does it currently
+       link.setAttribute('title', imgHrefFileName.replace(/_/g, ' '));
        link.dataAttribs.src = undefined; // clear src string since we can 
serialize this
 
        var type = token.getAttribute('typeof');
@@ -1848,13 +1848,11 @@
                link.addAttribute('data-mw', JSON.stringify(dataMw));
        }
 
-       // Record the localized version of the namespace
+       // Record shadow attribute info:
+       // - original namespace and localized version
+       // - original filename and filename used in href
        link.setShadowInfo('namespace', 
title.getNamespace().getNormalizedText(), nsText);
-
-       // Record the original file name, if necessary
-       if (imgHrefFileName !== fileName) {
-               link.setShadowInfo('fileName', imgHrefFileName, fileName);
-       }
+       link.setShadowInfo('fileName', imgHrefFileName, fileName);
 
        var content = token.getAttribute('mw:maybeContent') || 
token.getAttribute('href');
        cb({ tokens: [ link, content, new EndTagTk('a') ] });
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index bd96cd1..035b2cb 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -16484,11 +16484,14 @@
 Media link to nonexistent file (T3702)
 !! wikitext
 [[Media:No such.jpg]]
+[[Media:No_such file.jpg]]
 !! html/php
 <p><a href="/index.php?title=Special:Upload&amp;wpDestFile=No_such.jpg" 
class="new" title="No such.jpg">Media:No such.jpg</a>
+<a href="/index.php?title=Special:Upload&amp;wpDestFile=No_such_file.jpg" 
class="new" title="No such file.jpg">Media:No_such file.jpg</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:Media" href="./Special:FilePath/No_such.jpg" title="No such.jpg" 
typeof="mw:Error" 
data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image 
does not exist."}]}' 
data-parsoid='{"a":{"fileName":"No_such.jpg"},"sa":{"fileName":"No 
such.jpg"}}'>Media:No such.jpg</a></p>
+<p><a rel="mw:Media" href="./Special:FilePath/No_such.jpg" title="No such.jpg" 
typeof="mw:Error" 
data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image 
does not exist."}]}' 
data-parsoid='{"a":{"fileName":"No_such.jpg"},"sa":{"fileName":"No 
such.jpg"}}'>Media:No such.jpg</a>
+<a rel="mw:Media" href="./Special:FilePath/No_such_file.jpg" title="No such 
file.jpg" typeof="mw:Error" 
data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image 
does not exist."}]}' 
data-parsoid='{"a":{"fileName":"No_such_file.jpg"},"sa":{"fileName":"No_such 
file.jpg"}}'>Media:No_such file.jpg</a></p>
 !! end
 
 !! test

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I35bcb309346a672b8d636de9defef33c2e3eee18
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: Arlolra <[email protected]>
Gerrit-Reviewer: C. Scott Ananian <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to