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&wpDestFile=No_such.jpg"
class="new" title="No such.jpg">Media:No such.jpg</a>
+<a href="/index.php?title=Special:Upload&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