From deec39ed21522d88a9aaaac52600064b7664a8fd Mon Sep 17 00:00:00 2001 From: Krinkle Date: Tue, 23 Nov 2010 01:36:58 +0000 Subject: [PATCH] adding isEmpty to jQuery prototype --- resources/mediawiki.util/mediawiki.util.js | 27 ------------------- .../mediawiki.util/mediawiki.util.test.js | 8 ++++++ resources/mediawiki/mediawiki.js | 22 ++++++++++++++- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/resources/mediawiki.util/mediawiki.util.js b/resources/mediawiki.util/mediawiki.util.js index fc948dba10..f7beea40fe 100644 --- a/resources/mediawiki.util/mediawiki.util.js +++ b/resources/mediawiki.util/mediawiki.util.js @@ -127,33 +127,6 @@ return wgServer + wgArticlePath.replace( '$1', this.wikiUrlencode( str ) ); }, - /** - * Check is a variable is empty. Supports strings, booleans, arrays and - * objects. The string "0" is considered empty. A string containing only - * whitespace (ie. " ") is considered not empty. - * - * @param v The variable to check for emptyness - */ - 'isEmpty' : function( v ) { - var key; - if ( v === "" || v === 0 || v === "0" || v === null - || v === false || typeof v === 'undefined' ) - { - return true; - } - if ( v.length === 0 ) { - return true; - } - if ( typeof v === 'object' ) { - for ( key in v ) { - return false; - } - return true; - } - return false; - }, - - /** * Grab the URL parameter value for the given parameter. * Returns null if not found. diff --git a/resources/mediawiki.util/mediawiki.util.test.js b/resources/mediawiki.util/mediawiki.util.test.js index dc4eab6d13..3520db3892 100644 --- a/resources/mediawiki.util/mediawiki.util.test.js +++ b/resources/mediawiki.util/mediawiki.util.test.js @@ -60,6 +60,14 @@ 'function (string)'); mw.test.addTest('$.trimRight(\' foo bar \')', ' foo bar (string)'); + mw.test.addTest('typeof $.isEmpty', + 'function (string)'); + mw.test.addTest('$.isEmpty(\'string\')', + 'false (boolean)'); + mw.test.addTest('$.isEmpty(\'0\')', + 'true (boolean)'); + mw.test.addTest('$.isEmpty([])', + 'true (boolean)'); mw.test.addTest('typeof $.compareArray', 'function (string)'); mw.test.addTest('$.compareArray( [1, "a", [], [2, \'b\'] ], [1, \'a\', [], [2, "b"] ] )', diff --git a/resources/mediawiki/mediawiki.js b/resources/mediawiki/mediawiki.js index 6e285ace51..5793dfc4a8 100644 --- a/resources/mediawiki/mediawiki.js +++ b/resources/mediawiki/mediawiki.js @@ -1,5 +1,5 @@ /* - * JavaScript backwards-compatibility alternatives and convenience functions + * JavaScript backwards-compatibility alternatives and other convenience functions */ jQuery.extend({ @@ -16,6 +16,26 @@ jQuery.extend({ escapeRE : function( str ) { return str.replace ( /([\\{}()|.?*+^$\[\]])/g, "\\$1" ); }, + isEmpty : function( v ) { + var key; + if ( v === "" || v === 0 || v === "0" || v === null + || v === false || typeof v === 'undefined' ) + { + return true; + } + // the for-loop could potentially contain prototypes + // to avoid that we check it's length first + if ( v.length === 0 ) { + return true; + } + if ( typeof v === 'object' ) { + for ( key in v ) { + return false; + } + return true; + } + return false; + }, compareArray : function( arrThis, arrAgainst ) { if ( arrThis.length != arrAgainst.length ) { return false; -- 2.20.1