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