MarkTraceur has uploaded a new change for review.
https://gerrit.wikimedia.org/r/53620
Change subject: Handle case insensitivity in a more sane way
......................................................................
Handle case insensitivity in a more sane way
This should help with the insensitivity regressions we have seen in the past.
Change-Id: I6c100fe29fcb7018907bec98db868a98ce9dbbbe
---
M js/lib/ext.core.BehaviorSwitchHandler.js
M js/lib/ext.core.LinkHandler.js
M js/lib/ext.core.TemplateHandler.js
M js/lib/mediawiki.WikiConfig.js
4 files changed, 13 insertions(+), 9 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Parsoid
refs/changes/20/53620/1
diff --git a/js/lib/ext.core.BehaviorSwitchHandler.js
b/js/lib/ext.core.BehaviorSwitchHandler.js
index 5d51998..d3626c9 100644
--- a/js/lib/ext.core.BehaviorSwitchHandler.js
+++ b/js/lib/ext.core.BehaviorSwitchHandler.js
@@ -12,9 +12,7 @@
BehaviorSwitchHandler.prototype.onBehaviorSwitch = function ( token, manager,
cb ) {
var metaToken, magicWord = token.attribs[0].v,
env = this.manager.env,
- switchType = magicWord.toLowerCase(),
- actualType = env.conf.wiki.magicWords[magicWord] ||
- env.conf.wiki.magicWords[switchType];
+ actualType = env.conf.wiki.getMagicWord( magicWord );
env.setVariable( actualType, true );
@@ -39,8 +37,7 @@
switchType = magicWord.toLowerCase();
- var actualType = env.conf.wiki.magicWords[magicWord] ||
- env.conf.wiki.magicWords[switchType];
+ var actualType = env.conf.wiki.getMagicWord( magicWord );
if ( actualType ) {
token.dataAttribs.magicSrc = magicWord;
diff --git a/js/lib/ext.core.LinkHandler.js b/js/lib/ext.core.LinkHandler.js
index 6ac1a4d..974cf4e 100644
--- a/js/lib/ext.core.LinkHandler.js
+++ b/js/lib/ext.core.LinkHandler.js
@@ -291,8 +291,7 @@
// English and contain an 'img_' prefix. We drop the
// prefix before stuffing them in data-parsoid in order
to
// save space (that's shortCanonicalOption)
- var canonicalOption = ( env.conf.wiki.magicWords[oText]
||
- env.conf.wiki.magicWords[lowerOText] ||
+ var canonicalOption = ( env.conf.wiki.getMagicWord(
oText ) ||
('img_'+lowerOText) );
var shortCanonicalOption =
canonicalOption.replace(/^img_/, '');
// 'imgOption' is the key we'd put in oHash; it names
the 'group'
diff --git a/js/lib/ext.core.TemplateHandler.js
b/js/lib/ext.core.TemplateHandler.js
index c9440da..e5584a6 100644
--- a/js/lib/ext.core.TemplateHandler.js
+++ b/js/lib/ext.core.TemplateHandler.js
@@ -154,7 +154,7 @@
// Check if we have a parser function
var prefix = target.split(':', 1)[0].trim();
var lowerPrefix = prefix.toLowerCase();
- var translatedPrefix = env.conf.wiki.magicWords[prefix] ||
env.conf.wiki.magicWords[lowerPrefix] || lowerPrefix;
+ var translatedPrefix = env.conf.wiki.getMagicWord( prefix ) ||
lowerPrefix;
if ( translatedPrefix && 'pf_' + translatedPrefix in
this.parserFunctions ) {
return {
isPF: true,
diff --git a/js/lib/mediawiki.WikiConfig.js b/js/lib/mediawiki.WikiConfig.js
index 9ac75a2..4d8c979 100644
--- a/js/lib/mediawiki.WikiConfig.js
+++ b/js/lib/mediawiki.WikiConfig.js
@@ -86,6 +86,7 @@
var alias = aliases[mwax];
if ( mw['case-sensitive'] !== '' ) {
alias = alias.toLowerCase();
+ this.mwInsensitivity[alias] = true;
}
if ( alias.match( /\$1/ ) !== null ) {
@@ -225,6 +226,7 @@
namespaceNames: null,
namespaceIds: null,
magicWords: null,
+ mwInsensitivity: null,
mwAliases: null,
specialPages: null,
extensionTags: null,
@@ -248,6 +250,7 @@
this.namespaceNames = {};
this.namespaceIds = {};
this.magicWords = {};
+ this.mwInsensitivity = {};
this.mwAliases = {};
this.specialPages = {};
this.extensionTags = {};
@@ -259,7 +262,12 @@
},
getMagicWord: function ( alias ) {
- return this.magicWords[alias] || null;
+ var lowerAlias = alias.toLowerCase();
+ if ( this.mwInsensitivity[lowerAlias] ) {
+ return this.magicWords[lowerAlias] || null;
+ } else {
+ return this.magicWords[alias] || null;
+ }
},
getMagicPatternMatcher: function ( optionsList ) {
--
To view, visit https://gerrit.wikimedia.org/r/53620
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6c100fe29fcb7018907bec98db868a98ce9dbbbe
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Parsoid
Gerrit-Branch: master
Gerrit-Owner: MarkTraceur <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits