Subramanya Sastry has uploaded a new change for review.
https://gerrit.wikimedia.org/r/119895
Change subject: WIP: (Bug 62341) WTS fix to use regular wikilinks if nowikis
show up.
......................................................................
WIP: (Bug 62341) WTS fix to use regular wikilinks if nowikis show up.
* This doesn't fix 62341 exactly (nowikis still introduced in link
content), but it atleast doesn't break the wikilink anymore.
* TO BE DONE:
- add parser tests.
- investigate the html2wt failure.
- maybe do some code cleanup.
Change-Id: Ie661a586bb050171811db8d975c91e1a286b7aa3
---
M lib/wts.LinkHandler.js
M tests/parserTests-blacklist.js
2 files changed, 19 insertions(+), 9 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/95/119895/1
diff --git a/lib/wts.LinkHandler.js b/lib/wts.LinkHandler.js
index 505704d..bc7e036 100644
--- a/lib/wts.LinkHandler.js
+++ b/lib/wts.LinkHandler.js
@@ -112,7 +112,8 @@
var res = state.serializer.escapeWikiText(state, contentString, { node:
contentNode });
state.inLink = false;
state.wteHandlerStack.pop();
- return res;
+
+ return { res: res, changed: res !== contentString };
};
/**
@@ -335,28 +336,35 @@
}
// The string value of the content, if it is plain text.
- var linkTarget;
+ var linkTarget, escapedRes;
if ( linkData.isRedirect ) {
linkTarget = target.value;
if (target.modified || !target.fromsrc) {
linkTarget =
linkTarget.replace(/^(\.\.?\/)*/, '').replace(/_/g, ' ');
- linkTarget =
escapeWikiLinkContentString(linkTarget,
+ escapedRes =
escapeWikiLinkContentString(linkTarget,
state, linkData.contentNode);
+ linkTarget = escapedRes.res;
}
cb( linkData.prefix + '[[' + linkTarget + ']]',
node );
return;
} else if ( isSimpleWikiLink(env, dp, target, linkData)
) {
// Simple case
if (!target.modified &&
!linkData.contentModified) {
- linkTarget = target.value;
+ cb( linkData.prefix + '[[' +
target.value + ']]' + linkData.tail, node );
} else {
- linkTarget =
escapeWikiLinkContentString(linkData.content.string,
+ linkTarget = addColonEscape(this.env,
linkData.content.string, linkData);
+ escapedRes =
escapeWikiLinkContentString(linkData.content.string,
state,
linkData.contentNode);
- linkTarget = addColonEscape(this.env,
linkTarget, linkData);
+ if (escapedRes.changed) {
+ // If the content string got
nowiki escapes, we can no longer
+ // use the simple wikilink
format for it.
+ cb( linkData.prefix + '[[' +
linkTarget + '|' + escapedRes.res + ']]'
+ + linkData.tail, node );
+ } else {
+ cb( linkData.prefix + '[[' +
linkTarget + ']]' + linkData.tail, node );
+ }
}
-
- cb( linkData.prefix + '[[' + linkTarget + ']]'
+ linkData.tail, node );
return;
} else {
var usePT = usePipeTrick(env, dp, target,
linkData);
@@ -377,8 +385,9 @@
if (linkData.content.fromsrc) {
contentSrc =
linkData.content.string;
} else {
- contentSrc =
escapeWikiLinkContentString(linkData.content.string || '',
+ escapedRes =
escapeWikiLinkContentString(linkData.content.string || '',
state,
linkData.contentNode);
+ contentSrc = escapedRes.res;
}
}
diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js
index 639f9c5..fd2d9de 100644
--- a/tests/parserTests-blacklist.js
+++ b/tests/parserTests-blacklist.js
@@ -1411,6 +1411,7 @@
add("html2wt", "Interlanguage link, with prefix links", "Blah blah blah\n");
add("html2wt", "Double interlanguage link, with prefix links (bug 8897)",
"Blah blah blah\n");
add("html2wt", "Parsoid-specific test: Wikilinks with should RT
properly", "<a href=\"/index.php?title=WW_II&action=edit&redlink=1\"
class=\"new\" title=\"WW II (lonkásá ezalí tɛ̂)\">WW II</a>\n");
+add("html2wt", "Parsoid bug 53221: Wikilinks should be properly
entity-escaped", "He&nbsp;llo [[Foo|He&nbsp;llo]]\n\nHe&nbsp;llo
[[He llo]]\n");
add("html2wt", "Parsoid: recognize interlanguage links without a target page",
"\n[[http://ko.wikipedia.org/wiki/]]\n");
add("html2wt", "Parsoid: recognize interwiki links without a target page",
"[[ko:]]\n");
add("html2wt", "Redirect to image page (2)", "#REDIRECT [[File:Wiki.png]]");
--
To view, visit https://gerrit.wikimedia.org/r/119895
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie661a586bb050171811db8d975c91e1a286b7aa3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits