jenkins-bot has submitted this change and it was merged.

Change subject: jquery.tablesorter: Minor coding style cleanup and DRY
......................................................................


jquery.tablesorter: Minor coding style cleanup and DRY

* Consistently name 'length' cached variables 'len' (e.g. not 'l').

* Fix invalid documentation syntax for convertSortList().
  (Build is passing because this file is not yet indexed.)

* Remove redundant 'len' variable from pure JavaScript arrays where
  iterations can't change the length. Caching the length is a dated
  practice meant to micro-optimise execution time. For the moment,
  kept any loops with complex iteration bodies as-is, as well as loops
  over structures that are not pure arrays (e.g. NodeList objects).

* Use getParserById() in addParser() instead of duplicating its logic.

Change-Id: I566eff6efd97b5d9672277bacb4cb2b501f4625f
---
M resources/src/jquery/jquery.tablesorter.js
1 file changed, 36 insertions(+), 54 deletions(-)

Approvals:
  Bartosz Dziewoński: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/resources/src/jquery/jquery.tablesorter.js 
b/resources/src/jquery/jquery.tablesorter.js
index f8216c9..c39dc55 100644
--- a/resources/src/jquery/jquery.tablesorter.js
+++ b/resources/src/jquery/jquery.tablesorter.js
@@ -59,17 +59,14 @@
  */
 
 ( function ( $, mw ) {
-       /* Local scope */
-
        var ts,
                parsers = [];
 
        /* Parser utility functions */
 
        function getParserById( name ) {
-               var i,
-                       len = parsers.length;
-               for ( i = 0; i < len; i++ ) {
+               var i;
+               for ( i = 0; i < parsers.length; i++ ) {
                        if ( parsers[ i ].id.toLowerCase() === 
name.toLowerCase() ) {
                                return parsers[ i ];
                        }
@@ -88,21 +85,19 @@
                        // Cast any numbers or other stuff to a string, methods
                        // like charAt, toLowerCase and split are expected.
                        return String( data );
-               } else {
-                       if ( !node ) {
-                               return $node.text();
-                       } else if ( node.tagName.toLowerCase() === 'img' ) {
-                               return $node.attr( 'alt' ) || ''; // handle 
undefined alt
-                       } else {
-                               return $.map( $.makeArray( node.childNodes ), 
function ( elem ) {
-                                       if ( elem.nodeType === 
Node.ELEMENT_NODE ) {
-                                               return getElementSortKey( elem 
);
-                                       } else {
-                                               return $.text( elem );
-                                       }
-                               } ).join( '' );
-                       }
                }
+               if ( !node ) {
+                       return $node.text();
+               }
+               if ( node.tagName.toLowerCase() === 'img' ) {
+                       return $node.attr( 'alt' ) || ''; // handle undefined 
alt
+               }
+               return $.map( $.makeArray( node.childNodes ), function ( elem ) 
{
+                       if ( elem.nodeType === Node.ELEMENT_NODE ) {
+                               return getElementSortKey( elem );
+                       }
+                       return $.text( elem );
+               } ).join( '' );
        }
 
        function detectParserForColumn( table, rows, column ) {
@@ -247,7 +242,6 @@
                        pos = normalized[ i ][ checkCell ];
 
                        l = row[ pos ].length;
-
                        for ( j = 0; j < l; j++ ) {
                                fragment.appendChild( row[ pos ][ j ] );
                        }
@@ -299,7 +293,7 @@
 
        function uniqueElements( array ) {
                var uniques = [];
-               $.each( array, function ( index, elem ) {
+               $.each( array, function ( i, elem ) {
                        if ( elem !== undefined && $.inArray( elem, uniques ) 
=== -1 ) {
                                uniques.push( elem );
                        }
@@ -322,6 +316,7 @@
                        exploded,
                        $tableHeaders = $( [] ),
                        $tableRows = $( 'thead:eq(0) > tr', table );
+
                if ( $tableRows.length <= 1 ) {
                        $tableHeaders = $tableRows.children( 'th' );
                } else {
@@ -413,9 +408,8 @@
        }
 
        function isValueInArray( v, a ) {
-               var i,
-                               len = a.length;
-               for ( i = 0; i < len; i++ ) {
+               var i;
+               for ( i = 0; i < a.length; i++ ) {
                        if ( a[ i ][ 0 ] === v ) {
                                return true;
                        }
@@ -467,7 +461,8 @@
                $headers.removeClass( css[ 0 ] ).removeClass( css[ 1 ] ).attr( 
'title', msg[ 1 ] );
 
                for ( var i = 0; i < list.length; i++ ) {
-                       $headers.eq( columnToHeader[ list[ i ][ 0 ] ] )
+                       $headers
+                               .eq( columnToHeader[ list[ i ][ 0 ] ] )
                                .addClass( css[ list[ i ][ 1 ] ] )
                                .attr( 'title', msg[ list[ i ][ 1 ] ] );
                }
@@ -483,14 +478,14 @@
 
        function multisort( table, sortList, cache ) {
                var i,
-                       sortFn = [],
-                       len = sortList.length;
-               for ( i = 0; i < len; i++ ) {
+                       sortFn = [];
+
+               for ( i = 0; i < sortList.length; i++ ) {
                        sortFn[ i ] = ( sortList[ i ][ 1 ] ) ? sortTextDesc : 
sortText;
                }
                cache.normalized.sort( function ( array1, array2 ) {
                        var i, col, ret;
-                       for ( i = 0; i < len; i++ ) {
+                       for ( i = 0; i < sortList.length; i++ ) {
                                col = sortList[ i ][ 0 ];
                                ret = sortFn[ i ].call( this, array1[ col ], 
array2[ col ] );
                                if ( ret !== 0 ) {
@@ -518,7 +513,7 @@
                        ascii = separatorTransformTable[ 0 ].split( '\t' 
).concat( digitTransformTable[ 0 ].split( '\t' ) );
                        localised = separatorTransformTable[ 1 ].split( '\t' 
).concat( digitTransformTable[ 1 ].split( '\t' ) );
 
-                       // Construct regex for number identification
+                       // Construct regexes for number identification
                        for ( i = 0; i < ascii.length; i++ ) {
                                ts.transformTable[ localised[ i ] ] = ascii[ i 
];
                                digits.push( mw.RegExp.escape( localised[ i ] ) 
);
@@ -588,8 +583,8 @@
                $table.find( '> tbody > tr' ).each( function () {
                        var i,
                                col = 0,
-                               l = this.cells.length;
-                       for ( i = 0; i < l; i++ ) {
+                               len = this.cells.length;
+                       for ( i = 0; i < len; i++ ) {
                                $( this.cells[ i ] ).data( 'tablesorter', {
                                        realCellIndex: col,
                                        realRowIndex: this.rowIndex
@@ -758,10 +753,9 @@
         * Converts sort objects [ { Integer: String }, ... ] to the internally 
used nested array
         * structure [ [ Integer , Integer ], ... ]
         *
-        * @param sortObjects {Array} List of sort objects.
+        * @param {Array} sortObjects List of sort objects.
         * @return {Array} List of internal sort definitions.
         */
-
        function convertSortList( sortObjects ) {
                var sortList = [];
                $.each( sortObjects, function ( i, sortObject ) {
@@ -1016,15 +1010,7 @@
                        },
 
                        addParser: function ( parser ) {
-                               var i,
-                                       len = parsers.length,
-                                       a = true;
-                               for ( i = 0; i < len; i++ ) {
-                                       if ( parsers[ i ].id.toLowerCase() === 
parser.id.toLowerCase() ) {
-                                               a = false;
-                                       }
-                               }
-                               if ( a ) {
+                               if ( !getParserById( parser.id ) ) {
                                        parsers.push( parser );
                                }
                        },
@@ -1111,9 +1097,8 @@
                format: function ( s ) {
                        var i, item,
                                a = s.split( '.' ),
-                               r = '',
-                               len = a.length;
-                       for ( i = 0; i < len; i++ ) {
+                               r = '';
+                       for ( i = 0; i < a.length; i++ ) {
                                item = a[ i ];
                                if ( item.length === 1 ) {
                                        r += '00' + item;
@@ -1156,23 +1141,20 @@
                        return ts.rgx.isoDate[ 0 ].test( s );
                },
                format: function ( s ) {
-                       var isodate,
-                               matches;
+                       var isodate, matches;
                        if ( !Date.prototype.toISOString ) {
                                // Old browsers don't understand iso, Fallback 
to US date parsing and ignore the time part.
                                matches = $.trim( s ).match( ts.rgx.isoDate[ 1 
] );
-                               if ( matches ) {
-                                       isodate = new Date( matches[ 2 ]  + '/' 
+ matches[ 3 ] + '/' + matches[ 1 ] );
-                               } else {
+                               if ( !matches ) {
                                        return $.tablesorter.formatFloat( 0 );
                                }
+                               isodate = new Date( matches[ 2 ]  + '/' + 
matches[ 3 ] + '/' + matches[ 1 ] );
                        } else {
                                matches = s.match( ts.rgx.isoDate[ 0 ] );
-                               if ( matches ) {
-                                       isodate = new Date( $.trim( matches[ 0 
] ) );
-                               } else {
+                               if ( !matches ) {
                                        return $.tablesorter.formatFloat( 0 );
                                }
+                               isodate = new Date( $.trim( matches[ 0 ] ) );
                        }
                        return $.tablesorter.formatFloat( ( isodate !== 
undefined ) ? isodate.getTime() : 0 );
                },

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I566eff6efd97b5d9672277bacb4cb2b501f4625f
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Krinkle <[email protected]>
Gerrit-Reviewer: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: Edokter <[email protected]>
Gerrit-Reviewer: Jack Phoenix <[email protected]>
Gerrit-Reviewer: TheDJ <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to