From 9d67e9973e6766e057c70ea8c811be8e269fb80a Mon Sep 17 00:00:00 2001 From: Fomafix Date: Fri, 22 Sep 2017 06:46:40 +0200 Subject: [PATCH] Use native ES5 Array prototype methods instead of jQuery Replace * $.each( array, function ( index, value ) { ... } ) by array.forEach( function ( value ) { ... } ) * $.grep( array, function ( value ) { ... } ) by array.filter( function ( value ) { ... } ) * $.map( array, function ( value ) { ... } ) by array.map( function ( value ) { ... } ) Change-Id: I985ddf710e13c9ae788245349e2791571aeec97e --- resources/src/jquery/jquery.accessKeyLabel.js | 2 +- resources/src/jquery/jquery.color.js | 4 ++-- resources/src/jquery/jquery.localize.js | 2 +- resources/src/jquery/jquery.tablesorter.js | 2 +- .../mediawiki.language.months.js | 14 +++++++------- resources/src/mediawiki.legacy/wikibits.js | 2 +- .../mediawiki.special.apisandbox.js | 4 ++-- .../mediawiki.special/mediawiki.special.import.js | 2 +- resources/src/mediawiki/api.js | 2 +- resources/src/mediawiki/mediawiki.inspect.js | 14 +++++++------- resources/src/mediawiki/mediawiki.js | 2 +- 11 files changed, 25 insertions(+), 25 deletions(-) diff --git a/resources/src/jquery/jquery.accessKeyLabel.js b/resources/src/jquery/jquery.accessKeyLabel.js index 4f900a4d1e..91b7035955 100644 --- a/resources/src/jquery/jquery.accessKeyLabel.js +++ b/resources/src/jquery/jquery.accessKeyLabel.js @@ -137,7 +137,7 @@ } parts = ( mw.msg( 'word-separator' ) + mw.msg( 'brackets' ) ).split( '$1' ); - regexp = new RegExp( $.map( parts, mw.RegExp.escape ).join( '.*?' ) + '$' ); + regexp = new RegExp( parts.map( mw.RegExp.escape ).join( '.*?' ) + '$' ); newTitle = oldTitle.replace( regexp, '' ); accessKeyLabel = getAccessKeyLabel( element ); diff --git a/resources/src/jquery/jquery.color.js b/resources/src/jquery/jquery.color.js index 847afd4e86..894cf863e8 100644 --- a/resources/src/jquery/jquery.color.js +++ b/resources/src/jquery/jquery.color.js @@ -28,7 +28,7 @@ } // We override the animation for all of these color styles - $.each( [ + [ 'backgroundColor', 'borderBottomColor', 'borderLeftColor', @@ -36,7 +36,7 @@ 'borderTopColor', 'color', 'outlineColor' - ], function ( i, attr ) { + ].forEach( function ( attr ) { $.fx.step[ attr ] = function ( fx ) { if ( !fx.colorInit ) { fx.start = getColor( fx.elem, attr ); diff --git a/resources/src/jquery/jquery.localize.js b/resources/src/jquery/jquery.localize.js index 05b3891dea..b1bf0f48ae 100644 --- a/resources/src/jquery/jquery.localize.js +++ b/resources/src/jquery/jquery.localize.js @@ -137,7 +137,7 @@ // Attributes // Note: there's no way to prevent escaping of values being injected into attributes, this is // on purpose, not a design flaw. - $.each( attributes, function ( i, attr ) { + attributes.forEach( function ( attr ) { var msgAttr = attr + '-msg'; $target.find( '[' + msgAttr + ']' ).each( function () { var $el = $( this ); diff --git a/resources/src/jquery/jquery.tablesorter.js b/resources/src/jquery/jquery.tablesorter.js index ecd376a693..cac103ee66 100644 --- a/resources/src/jquery/jquery.tablesorter.js +++ b/resources/src/jquery/jquery.tablesorter.js @@ -77,7 +77,7 @@ if ( node.tagName.toLowerCase() === 'img' ) { return $node.attr( 'alt' ) || ''; // handle undefined alt } - return $.map( $.makeArray( node.childNodes ), function ( elem ) { + return $.makeArray( node.childNodes ).map( function ( elem ) { if ( elem.nodeType === Node.ELEMENT_NODE ) { return getElementSortKey( elem ); } diff --git a/resources/src/mediawiki.language/mediawiki.language.months.js b/resources/src/mediawiki.language/mediawiki.language.months.js index 5a1a5cb64a..7b78562c43 100644 --- a/resources/src/mediawiki.language/mediawiki.language.months.js +++ b/resources/src/mediawiki.language/mediawiki.language.months.js @@ -3,7 +3,7 @@ * * Loading this module also ensures the availability of appropriate messages via mw.msg. */ -( function ( mw, $ ) { +( function ( mw ) { var monthMessages = [ 'january', 'february', 'march', 'april', @@ -21,8 +21,8 @@ 'sep', 'oct', 'nov', 'dec' ]; - // Function suitable for passing to jQuery.map - // Can't use mw.msg directly because jQuery.map passes element index as second argument + // Function suitable for passing to Array.prototype.map + // Can't use mw.msg directly because Array.prototype.map passes element index as second argument function mwMsgMapper( key ) { return mw.msg( key ); } @@ -48,9 +48,9 @@ genitive: monthGenMessages, abbrev: monthAbbrevMessages }, - names: $.map( monthMessages, mwMsgMapper ), - genitive: $.map( monthGenMessages, mwMsgMapper ), - abbrev: $.map( monthAbbrevMessages, mwMsgMapper ) + names: monthMessages.map( mwMsgMapper ), + genitive: monthGenMessages.map( mwMsgMapper ), + abbrev: monthAbbrevMessages.map( mwMsgMapper ) }; -}( mediaWiki, jQuery ) ); +}( mediaWiki ) ); diff --git a/resources/src/mediawiki.legacy/wikibits.js b/resources/src/mediawiki.legacy/wikibits.js index bd1b9188be..f5bdfd8058 100644 --- a/resources/src/mediawiki.legacy/wikibits.js +++ b/resources/src/mediawiki.legacy/wikibits.js @@ -96,7 +96,7 @@ * * @deprecated since 1.26 */ - $.each( [ 'write', 'writeln' ], function ( idx, method ) { + [ 'write', 'writeln' ].forEach( function ( method ) { mw.log.deprecate( document, method, function () { $( 'body' ).append( $.parseHTML( Array.prototype.join.call( arguments, '' ) ) ); }, 'Use jQuery or mw.loader.load instead.', 'document.' + method ); diff --git a/resources/src/mediawiki.special/mediawiki.special.apisandbox.js b/resources/src/mediawiki.special/mediawiki.special.apisandbox.js index 9e8d4f4658..7029116cdc 100644 --- a/resources/src/mediawiki.special/mediawiki.special.apisandbox.js +++ b/resources/src/mediawiki.special/mediawiki.special.apisandbox.js @@ -194,7 +194,7 @@ multi: function () { var map = this.paramInfo.submodules, v = this.isDisabled() ? this.paramInfo[ 'default' ] : this.getApiValue(); - return v === undefined || v === '' ? [] : $.map( String( v ).split( '|' ), function ( v ) { + return v === undefined || v === '' ? [] : String( v ).split( '|' ).map( function ( v ) { return { value: v, path: map[ v ] }; } ); } @@ -488,7 +488,7 @@ throw new Error( 'Unknown parameter type ' + pi.type ); } - items = $.map( pi.type, function ( v ) { + items = pi.type.map( function ( v ) { var config = { data: String( v ), label: String( v ), diff --git a/resources/src/mediawiki.special/mediawiki.special.import.js b/resources/src/mediawiki.special/mediawiki.special.import.js index 3357461f2a..2cb96afc48 100644 --- a/resources/src/mediawiki.special/mediawiki.special.import.js +++ b/resources/src/mediawiki.special/mediawiki.special.import.js @@ -11,7 +11,7 @@ option, options; if ( $selected.attr( 'data-subprojects' ) ) { - options = $.map( $selected.attr( 'data-subprojects' ).split( ' ' ), function ( el ) { + options = $selected.attr( 'data-subprojects' ).split( ' ' ).map( function ( el ) { option = document.createElement( 'option' ); option.appendChild( document.createTextNode( el ) ); option.setAttribute( 'value', el ); diff --git a/resources/src/mediawiki/api.js b/resources/src/mediawiki/api.js index b4639ab427..f178698ce8 100644 --- a/resources/src/mediawiki/api.js +++ b/resources/src/mediawiki/api.js @@ -114,7 +114,7 @@ * @method */ abort: function () { - $.each( this.requests, function ( index, request ) { + this.requests.forEach( function ( request ) { if ( request ) { request.abort(); } diff --git a/resources/src/mediawiki/mediawiki.inspect.js b/resources/src/mediawiki/mediawiki.inspect.js index 9332773e1f..006ca1f26e 100644 --- a/resources/src/mediawiki/mediawiki.inspect.js +++ b/resources/src/mediawiki/mediawiki.inspect.js @@ -47,7 +47,7 @@ var modules = inspect.getLoadedModules(), graph = {}; - $.each( modules, function ( moduleIndex, moduleName ) { + modules.forEach( function ( moduleName ) { var dependencies = mw.loader.moduleRegistry[ moduleName ].dependencies || []; if ( !hasOwn.call( graph, moduleName ) ) { @@ -164,7 +164,7 @@ * @return {Array} List of module names */ getLoadedModules: function () { - return $.grep( mw.loader.getModuleNames(), function ( module ) { + return mw.loader.getModuleNames().filter( function ( module ) { return mw.loader.getState( module ) === 'ready'; } ); }, @@ -206,7 +206,7 @@ Array.prototype.slice.call( arguments ) : $.map( inspect.reports, function ( v, k ) { return k; } ); - $.each( reports, function ( index, name ) { + reports.forEach( function ( name ) { inspect.dumpTable( inspect.reports[ name ]() ); } ); }, @@ -224,7 +224,7 @@ */ size: function () { // Map each module to a descriptor object. - var modules = $.map( inspect.getLoadedModules(), function ( module ) { + var modules = inspect.getLoadedModules().map( function ( module ) { return { name: module, size: inspect.getModuleSize( module ) @@ -235,7 +235,7 @@ sortByProperty( modules, 'size', true ); // Convert size to human-readable string. - $.each( modules, function ( i, module ) { + modules.forEach( function ( module ) { module.sizeInBytes = module.size; module.size = humanSize( module.size ); } ); @@ -252,7 +252,7 @@ css: function () { var modules = []; - $.each( inspect.getLoadedModules(), function ( index, name ) { + inspect.getLoadedModules().forEach( function ( name ) { var css, stats, module = mw.loader.moduleRegistry[ name ]; try { @@ -306,7 +306,7 @@ pattern = new RegExp( mw.RegExp.escape( pattern ), 'g' ); } - return $.grep( inspect.getLoadedModules(), function ( moduleName ) { + return inspect.getLoadedModules().filter( function ( moduleName ) { var module = mw.loader.moduleRegistry[ moduleName ]; // Grep module's JavaScript diff --git a/resources/src/mediawiki/mediawiki.js b/resources/src/mediawiki/mediawiki.js index 506d60a2cd..aae292d902 100644 --- a/resources/src/mediawiki/mediawiki.js +++ b/resources/src/mediawiki/mediawiki.js @@ -1474,7 +1474,7 @@ } ); } - $.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). -- 2.20.1