X-Git-Url: http://git.cyclocoop.org//%27http:/code.google.com/p/ie7-js//%27?a=blobdiff_plain;f=resources%2Fsrc%2Fmediawiki%2Fmediawiki.js;h=9a347f2567cc90ab3675d707a3ea37d13f3ca042;hb=8ea9d0d7f7acb6afd0d9a42d5e7c7f83f9444fe4;hp=0ae45b54f0b290dc8a1c6eceb9d97bcd51a388fc;hpb=971a50c4f3c61fb3a4bec60cd712317bb8ddcb9a;p=lhc%2Fweb%2Fwiklou.git diff --git a/resources/src/mediawiki/mediawiki.js b/resources/src/mediawiki/mediawiki.js index 0ae45b54f0..9a347f2567 100644 --- a/resources/src/mediawiki/mediawiki.js +++ b/resources/src/mediawiki/mediawiki.js @@ -625,7 +625,7 @@ * @param {Function} callback */ trackUnsubscribe: function ( callback ) { - trackHandlers = $.grep( trackHandlers, function ( fns ) { + trackHandlers = trackHandlers.filter( function ( fns ) { if ( fns[ 1 ] === callback ) { trackCallbacks.remove( fns[ 0 ] ); // Ensure the tuple is removed to avoid holding on to closures @@ -1127,7 +1127,7 @@ registry[ module ].dependencies = [ registry[ module ].dependencies ]; } } - if ( $.inArray( module, resolved ) !== -1 ) { + if ( resolved.indexOf( module ) !== -1 ) { // Module already resolved; nothing to do return; } @@ -1138,7 +1138,7 @@ // Tracks down dependencies deps = registry[ module ].dependencies; for ( i = 0; i < deps.length; i++ ) { - if ( $.inArray( deps[ i ], resolved ) === -1 ) { + if ( resolved.indexOf( deps[ i ] ) === -1 ) { if ( unresolved.has( deps[ i ] ) ) { throw new Error( mw.format( 'Circular reference detected: $1 -> $2', @@ -1465,7 +1465,7 @@ if ( ready !== undefined || error !== undefined ) { jobs.push( { // Narrow down the list to modules that are worth waiting for - dependencies: $.grep( dependencies, function ( module ) { + dependencies: dependencies.filter( function ( module ) { var state = mw.loader.getState( module ); return state === 'registered' || state === 'loaded' || state === 'loading' || state === 'executing'; } ), @@ -1474,11 +1474,11 @@ } ); } - $.each( dependencies, function ( idx, module ) { + dependencies.forEach( function ( module ) { var state = mw.loader.getState( module ); // Only queue modules that are still in the initial 'registered' state // (not ones already loading, ready or error). - if ( state === 'registered' && $.inArray( module, queue ) === -1 ) { + if ( state === 'registered' && queue.indexOf( module ) === -1 ) { // Private modules must be embedded in the page. Don't bother queuing // these as the server will deny them anyway (T101806). if ( registry[ module ].group === 'private' ) { @@ -1499,9 +1499,7 @@ a = []; for ( key in o ) { - if ( hasOwn.call( o, key ) ) { - a.push( key ); - } + a.push( key ); } a.sort(); for ( key = 0; key < a.length; key++ ) { @@ -1538,10 +1536,9 @@ * @param {string} sourceLoadScript URL of load.php */ function doRequest( moduleMap, currReqBase, sourceLoadScript ) { - var query = $.extend( - { modules: buildModulesString( moduleMap ) }, - currReqBase - ); + // Optimisation: Inherit (Object.create), not copy ($.extend) + var query = Object.create( currReqBase ); + query.modules = buildModulesString( moduleMap ); query = sortQuery( query ); addScript( sourceLoadScript + '?' + $.param( query ) ); } @@ -1630,9 +1627,10 @@ // modules for this group from this source. modules = splits[ source ][ group ]; - currReqBase = $.extend( { - version: getCombinedVersion( modules ) - }, reqBase ); + // Optimisation: Inherit (Object.create), not copy ($.extend) + currReqBase = Object.create( reqBase ); + currReqBase.version = getCombinedVersion( modules ); + // For user modules append a user name to the query string. if ( group === 'user' && mw.config.get( 'wgUserName' ) !== null ) { currReqBase.user = mw.config.get( 'wgUserName' ); @@ -1761,7 +1759,7 @@ // Only load modules which are registered if ( hasOwn.call( registry, queue[ q ] ) && registry[ queue[ q ] ].state === 'registered' ) { // Prevent duplicate entries - if ( $.inArray( queue[ q ], batch ) === -1 ) { + if ( batch.indexOf( queue[ q ] ) === -1 ) { batch.push( queue[ q ] ); // Mark registered modules as loading registry[ queue[ q ] ].state = 'loading'; @@ -1784,7 +1782,7 @@ if ( mw.loader.store.enabled ) { implementations = []; sourceModules = []; - batch = $.grep( batch, function ( module ) { + batch = batch.filter( function ( module ) { var implementation = mw.loader.store.get( module ); if ( implementation ) { implementations.push( implementation ); @@ -1809,7 +1807,7 @@ mw.track( 'resourceloader.exception', { exception: err, source: 'store-eval' } ); // Re-add the failed ones that are still pending back to the batch - failed = $.grep( sourceModules, function ( module ) { + failed = sourceModules.filter( function ( module ) { return registry[ module ].state === 'loading'; } ); batchRequest( failed ); @@ -1962,7 +1960,7 @@ registry[ name ].messages = messages || null; registry[ name ].templates = templates || null; // The module may already have been marked as erroneous - if ( $.inArray( registry[ name ].state, [ 'error', 'missing' ] ) === -1 ) { + if ( registry[ name ].state !== 'error' && registry[ name ].state !== 'missing' ) { registry[ name ].state = 'loaded'; if ( allReady( registry[ name ].dependencies ) ) { execute( name ); @@ -2073,7 +2071,7 @@ } // Filter out top-level modules that are unknown or failed to load before. - filtered = $.grep( modules, function ( module ) { + filtered = modules.filter( function ( module ) { var state = mw.loader.getState( module ); return state !== 'error' && state !== 'missing'; } ); @@ -2110,7 +2108,7 @@ mw.loader.register( module ); } registry[ module ].state = state; - if ( $.inArray( state, [ 'ready', 'error', 'missing' ] ) !== -1 ) { + if ( state === 'ready' || state === 'error' || state === 'missing' ) { // Make sure pending modules depending on this one get executed if their // dependencies are now fulfilled! handlePending( module ); @@ -2125,10 +2123,7 @@ * in the registry. */ getVersion: function ( module ) { - if ( !hasOwn.call( registry, module ) || registry[ module ].version === undefined ) { - return null; - } - return registry[ module ].version; + return hasOwn.call( registry, module ) ? registry[ module ].version : null; }, /** @@ -2139,10 +2134,7 @@ * in the registry. */ getState: function ( module ) { - if ( !hasOwn.call( registry, module ) || registry[ module ].state === undefined ) { - return null; - } - return registry[ module ].state; + return hasOwn.call( registry, module ) ? registry[ module ].state : null; }, /** @@ -2348,11 +2340,13 @@ // Module failed to load descriptor.state !== 'ready' || // Unversioned, private, or site-/user-specific - ( !descriptor.version || $.inArray( descriptor.group, [ 'private', 'user' ] ) !== -1 ) || + !descriptor.version || + descriptor.group === 'private' || + descriptor.group === 'user' || // Partial descriptor // (e.g. skipped module, or style module with state=ready) - $.inArray( undefined, [ descriptor.script, descriptor.style, - descriptor.messages, descriptor.templates ] ) !== -1 + [ descriptor.script, descriptor.style, descriptor.messages, + descriptor.templates ].indexOf( undefined ) !== -1 ) { // Decline to store return false; @@ -2775,7 +2769,7 @@ $( function () { var loading, modules; - modules = $.grep( mw.loader.getModuleNames(), function ( module ) { + modules = mw.loader.getModuleNames().filter( function ( module ) { return mw.loader.getState( module ) === 'loading'; } ); // We only need a callback, not any actual module. First try a single using()