jenkins-bot has submitted this change and it was merged.

Change subject: Don't use MagicLinkText chunk if we failed serialization as a 
magic link.
......................................................................


Don't use MagicLinkText chunk if we failed serialization as a magic link.

[[Special:BookSources/0978739256|ISBN 0978739256]] will become a magic link,
but [[Special:BookSources/0978739256|foo]] is just an ordinary wikilink.

Similarly, [//tools.ietf.org/html/rfc1234 RFC 1234] will become the magic
link `RFC 1234`, but [//tools.ietf.org/html/rfc1234 foo] is just an ordinary
`mw:ExtLink`.

Change-Id: I3b42010e918f805b222283dee479f5c7cd408a20
---
M lib/wts.LinkHandler.js
M tests/parserTests.txt
2 files changed, 27 insertions(+), 1 deletion(-)

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



diff --git a/lib/wts.LinkHandler.js b/lib/wts.LinkHandler.js
index 598cb5e..e1c6632 100644
--- a/lib/wts.LinkHandler.js
+++ b/lib/wts.LinkHandler.js
@@ -600,7 +600,16 @@
                // preserve non-minimal forms.
                if (magicLinkMatch) {
                        var serializer = 
wiki.ExtResourceSerializer[magicLinkMatch[0]];
-                       cb(new MagicLinkText(serializer(magicLinkMatch, 
target.value, contentStr), node), node);
+                       var serialized = serializer(magicLinkMatch, 
target.value, contentStr);
+                       if (serialized[0] === '[') {
+                               // Serialization as a magic link failed 
(perhaps the
+                               // content string wasn't appropriate).
+                               cb(magicLinkMatch[0] === 'ISBN' ?
+                                       new WikiLinkText(serialized, node, 
wiki, 'mw:WikiLink') :
+                                       new ExtLinkText(serialized, node, wiki, 
'mw:ExtLink'));
+                       } else {
+                               cb(new MagicLinkText(serialized, node), node);
+                       }
                        return;
                // There is an interwiki for RFCs, but strangely none for PMIDs.
                } else {
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index 4651059..eefed7b 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -10121,6 +10121,23 @@
 1234</p>
 !! end
 
+# <nowiki> nodes shouldn't be inserted during html2wt by Parsoid,
+# since these are ExtLinkText, not MagicLinkText
+!! test
+Magic links: use appropriate serialization for "almost" magic links.
+!! wikitext
+X[[Special:BookSources/0978739256|foo]]
+
+X[//tools.ietf.org/html/rfc1234 foo]
+!! html/php
+<p>X<a href="/wiki/Special:BookSources/0978739256" 
title="Special:BookSources/0978739256">foo</a>
+</p><p>X<a rel="nofollow" class="external text" 
href="//tools.ietf.org/html/rfc1234">foo</a>
+</p>
+!! html/parsoid
+<p>X<a rel="mw:WikiLink" href="./Special:BookSources/0978739256" 
title="Special:BookSources/0978739256">foo</a></p>
+<p>X<a rel="mw:ExtLink" href="//tools.ietf.org/html/rfc1234">foo</a></p>
+!! end
+
 ###
 ### Templates
 ####

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I3b42010e918f805b222283dee479f5c7cd408a20
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Cscott <[email protected]>
Gerrit-Reviewer: Arlolra <[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