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

Reply via email to