Bartosz Dziewoński has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/184150

Change subject: mediawiki.js: Add mw.Map#unset
......................................................................

mediawiki.js: Add mw.Map#unset

If I remember correctly, we didn't have this only because mw.Map used
to use the 'window' object before 24f84b08, and you can't 'delete'
properties of window on Internet Explorer 8, or something like this.

Add a usage in mediawiki.action.view.redirect.

Change-Id: I8868ae6ed4bf75bec04849b119132c0dc10c20a0
---
M resources/src/mediawiki.action/mediawiki.action.view.redirect.js
M resources/src/mediawiki/mediawiki.js
M tests/qunit/suites/resources/mediawiki/mediawiki.test.js
3 files changed, 38 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/50/184150/1

diff --git a/resources/src/mediawiki.action/mediawiki.action.view.redirect.js 
b/resources/src/mediawiki.action/mediawiki.action.view.redirect.js
index 52e0d4e..69fb221 100644
--- a/resources/src/mediawiki.action/mediawiki.action.view.redirect.js
+++ b/resources/src/mediawiki.action/mediawiki.action.view.redirect.js
@@ -12,7 +12,7 @@
                shouldChangeFragment, index;
 
        // Clear internal mw.config entries, so that no one tries to depend on 
them
-       mw.config.set( 'wgInternalRedirectTargetUrl', null );
+       mw.config.unset( 'wgInternalRedirectTargetUrl' );
 
        index = canonical.indexOf( '#' );
        if ( index !== -1 ) {
diff --git a/resources/src/mediawiki/mediawiki.js 
b/resources/src/mediawiki/mediawiki.js
index 1763c8e..1c72ebe 100644
--- a/resources/src/mediawiki/mediawiki.js
+++ b/resources/src/mediawiki/mediawiki.js
@@ -209,6 +209,32 @@
                },
 
                /**
+                * Unsets one or multiple key/value pairs, removing it from the 
map.
+                *
+                * @since 1.25
+                * @param {string|Array} selection String key or array of keys 
to unset values for.
+                * @return {boolean} This returns true on success, false on 
failure.
+                */
+               unset: function ( selection ) {
+                       var i;
+
+                       if ( $.isArray( selection ) ) {
+                               selection = slice.call( selection );
+                               for ( i = 0; i < selection.length; i++ ) {
+                                       delete this.values[selection[i]];
+                               }
+                               return true;
+                       }
+
+                       if ( typeof selection === 'string' ) {
+                               delete this.values[selection];
+                               return true;
+                       }
+
+                       return false;
+               },
+
+               /**
                 * Checks if one or multiple keys exist.
                 *
                 * @param {Mixed} selection String key or array of keys to check
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.test.js 
b/tests/qunit/suites/resources/mediawiki/mediawiki.test.js
index 6c8c62f..4456e7f 100644
--- a/tests/qunit/suites/resources/mediawiki/mediawiki.test.js
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.test.js
@@ -55,7 +55,7 @@
                this.restoreWarnings();
        } );
 
-       QUnit.test( 'mw.Map', 34, function ( assert ) {
+       QUnit.test( 'mw.Map', 37, function ( assert ) {
                var arry, conf, funky, globalConf, nummy, someValues;
 
                conf = new mw.Map();
@@ -96,6 +96,10 @@
                assert.strictEqual( conf.get( funky ), null, 'Map.get ruturns 
null if selection was invalid (Function)' );
                assert.strictEqual( conf.get( nummy ), null, 'Map.get ruturns 
null if selection was invalid (Number)' );
 
+               conf.set( 'unsetA', 'A' );
+               conf.unset( 'unsetA' );
+               assert.strictEqual( conf.get( 'unsetA', true ), true, 
'Map.unset supports string argument' );
+
                conf.set( String( nummy ), 'I used to be a number' );
 
                assert.strictEqual( conf.exists( 'doesNotExist' ), false, 
'Map.exists where property does not exist' );
@@ -121,6 +125,12 @@
                        'notExist': null
                }, 'Map.get return includes keys that were not found as null 
values' );
 
+               conf.set( 'unsetB', 'B' );
+               conf.set( 'unsetC', 'C' );
+               conf.unset( ['unsetB', 'unsetC'] );
+               assert.strictEqual( conf.get( 'unsetB', true ), true, 
'Map.unset supports array argument' );
+               assert.strictEqual( conf.get( 'unsetC', true ), true, 
'Map.unset supports array argument' );
+
                // Interacting with globals and accessing the values object
                assert.strictEqual( conf.get(), conf.values, 'Map.get returns 
the entire values object by reference (if called without arguments)' );
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8868ae6ed4bf75bec04849b119132c0dc10c20a0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Bartosz Dziewoński <matma....@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to