From a101e81bde71e94170f1fa899432cbe8150910f9 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Fri, 15 Jun 2012 21:01:44 -0400 Subject: [PATCH] Interim take on cross-module variables, closes gh-817. --- src/ajax.js | 5 +-- src/attributes.js | 9 ++-- src/callbacks.js | 2 +- src/core.js | 100 ++++++++++++++++++++++---------------------- src/css.js | 4 +- src/deferred.js | 7 +--- src/effects.js | 2 +- src/manipulation.js | 2 +- src/traversing.js | 2 +- 9 files changed, 64 insertions(+), 69 deletions(-) diff --git a/src/ajax.js b/src/ajax.js index cb8af47c9..8e7f10ef5 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -11,7 +11,6 @@ var r20 = /%20/g, rquery = /\?/, rscript = /)<[^<]*)*<\/script>/gi, rselectTextarea = /^(?:select|textarea)/i, - rspacesAjax = /\s+/, rts = /([?&])_=[^&]*/, rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, @@ -72,7 +71,7 @@ function addToPrefiltersOrTransports( structure ) { } if ( jQuery.isFunction( func ) ) { - var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ), + var dataTypes = dataTypeExpression.toLowerCase().split( core_rspace ), i = 0, length = dataTypes.length, dataType, @@ -613,7 +612,7 @@ jQuery.extend({ s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); // Extract dataTypes list - s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax ); + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( core_rspace ); // Determine if a cross-domain request is in order if ( s.crossDomain == null ) { diff --git a/src/attributes.js b/src/attributes.js index 1b79ae44a..23a4fddd0 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -1,5 +1,4 @@ var rclass = /[\n\t\r]/g, - rspace = /\s+/, rreturn = /\r/g, rtype = /^(?:button|input)$/i, rfocusable = /^(?:button|input|object|select|textarea)$/i, @@ -45,7 +44,7 @@ jQuery.fn.extend({ } if ( value && typeof value === "string" ) { - classNames = value.split( rspace ); + classNames = value.split( core_rspace ); for ( i = 0, l = this.length; i < l; i++ ) { elem = this[ i ]; @@ -81,7 +80,7 @@ jQuery.fn.extend({ } if ( (value && typeof value === "string") || value === undefined ) { - classNames = ( value || "" ).split( rspace ); + classNames = ( value || "" ).split( core_rspace ); for ( i = 0, l = this.length; i < l; i++ ) { elem = this[ i ]; @@ -121,7 +120,7 @@ jQuery.fn.extend({ i = 0, self = jQuery( this ), state = stateVal, - classNames = value.split( rspace ); + classNames = value.split( core_rspace ); while ( (className = classNames[ i++ ]) ) { // check each className given, space seperated list @@ -359,7 +358,7 @@ jQuery.extend({ value = value.toLowerCase(); } - attrNames = value.split( rspace ); + attrNames = value.split( core_rspace ); l = attrNames.length; for ( ; i < l; i++ ) { diff --git a/src/callbacks.js b/src/callbacks.js index 12f2956ce..735330f12 100644 --- a/src/callbacks.js +++ b/src/callbacks.js @@ -4,7 +4,7 @@ var optionsCache = {}; // Convert String-formatted options into Object-formatted ones and store in cache function createOptions( options ) { var object = optionsCache[ options ] = {}; - jQuery.each( options.split( /\s+/ ), function( _, flag ) { + jQuery.each( options.split( core_rspace ), function( _, flag ) { object[ flag ] = true; }); return object; diff --git a/src/core.js b/src/core.js index c9ed81d2a..f4b760aee 100644 --- a/src/core.js +++ b/src/core.js @@ -1,15 +1,22 @@ -// Use the correct document accordingly with window argument (sandbox) -var document = window.document, - navigator = window.navigator, +var + // Use the correct document accordingly with window argument (sandbox) + document = window.document, location = window.location, + navigator = window.navigator, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwn = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - trim = String.prototype.trim, - indexOf = Array.prototype.indexOf, + core_push = Array.prototype.push, + core_slice = Array.prototype.slice, + core_indexOf = Array.prototype.indexOf, + core_toString = Object.prototype.toString, + core_hasOwn = Object.prototype.hasOwnProperty, + core_trim = String.prototype.trim, // Define a local copy of jQuery jQuery = function( selector, context ) { @@ -17,44 +24,43 @@ var document = window.document, return new jQuery.fn.init( selector, context, rootjQuery ); }, - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - // A central reference to the root jQuery(document) rootjQuery, - // A simple way to check for HTML strings or ID strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + // The deferred used on DOM ready + readyList, - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, + // For matching the engine and version of the browser + browserMatch, - // Used for trimming whitespace + // Used for detecting and trimming whitespace + core_rnotwhite = /\S/, + core_rspace = /\s+/, trimLeft = /^\s+/, trimRight = /\s+$/, + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + // Match a standalone tag rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, // JSON RegExp rvalidchars = /^[\],:{}\s]*$/, - rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, - rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, // Useragent RegExp - rwebkit = /(webkit)[ \/]([\w.]+)/, - ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, rmsie = /(msie) ([\w.]+)/, + rwebkit = /(webkit)[ \/]([\w.]+)/, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, // Matches dashed string for camelizing - rdashAlpha = /-([a-z]|[0-9])/ig, rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, // Used by jQuery.camelCase as callback to replace() fcamelCase = function( all, letter ) { @@ -64,12 +70,6 @@ var document = window.document, // Keep a UserAgent string for use with jQuery.browser userAgent = navigator.userAgent, - // For matching the engine and version of the browser - browserMatch, - - // The deferred used on DOM ready - readyList, - // The ready event handler and self cleanup method DOMContentLoaded = function() { if ( document.addEventListener ) { @@ -200,7 +200,7 @@ jQuery.fn = jQuery.prototype = { }, toArray: function() { - return slice.call( this ); + return core_slice.call( this ); }, // Get the Nth element in the matched element set OR @@ -222,7 +222,7 @@ jQuery.fn = jQuery.prototype = { var ret = this.constructor(); if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); + core_push.apply( ret, elems ); } else { jQuery.merge( ret, elems ); @@ -273,8 +273,8 @@ jQuery.fn = jQuery.prototype = { }, slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); + return this.pushStack( core_slice.apply( this, arguments ), + "slice", core_slice.call(arguments).join(",") ); }, map: function( callback ) { @@ -289,7 +289,7 @@ jQuery.fn = jQuery.prototype = { // For internal use only. // Behaves like an Array's method, not like a jQuery method. - push: push, + push: core_push, sort: [].sort, splice: [].splice }; @@ -440,7 +440,7 @@ jQuery.extend({ type: function( obj ) { return obj == null ? String( obj ) : - class2type[ toString.call(obj) ] || "object"; + class2type[ core_toString.call(obj) ] || "object"; }, isPlainObject: function( obj ) { @@ -454,8 +454,8 @@ jQuery.extend({ try { // Not own constructor property must be Object if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { return false; } } catch ( e ) { @@ -469,7 +469,7 @@ jQuery.extend({ var key; for ( key in obj ) {} - return key === undefined || hasOwn.call( obj, key ); + return key === undefined || core_hasOwn.call( obj, key ); }, isEmptyObject: function( obj ) { @@ -538,7 +538,7 @@ jQuery.extend({ // Workarounds based on findings by Jim Driscoll // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context globalEval: function( data ) { - if ( data && rnotwhite.test( data ) ) { + if ( data && core_rnotwhite.test( data ) ) { // We use execScript on Internet Explorer // We use an anonymous function so that context is window // rather than jQuery in Firefox @@ -600,11 +600,11 @@ jQuery.extend({ }, // Use native String.trim function wherever possible - trim: trim ? + trim: core_trim ? function( text ) { return text == null ? "" : - trim.call( text ); + core_trim.call( text ); } : // Otherwise use our own trimming functionality @@ -624,7 +624,7 @@ jQuery.extend({ var type = jQuery.type( array ); if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { - push.call( ret, array ); + core_push.call( ret, array ); } else { jQuery.merge( ret, array ); } @@ -637,8 +637,8 @@ jQuery.extend({ var len; if ( array ) { - if ( indexOf ) { - return indexOf.call( array, elem, i ); + if ( core_indexOf ) { + return core_indexOf.call( array, elem, i ); } len = array.length; @@ -743,9 +743,9 @@ jQuery.extend({ } // Simulated bind - var args = slice.call( arguments, 2 ), + var args = core_slice.call( arguments, 2 ), proxy = function() { - return fn.apply( context, args.concat( slice.call( arguments ) ) ); + return fn.apply( context, args.concat( core_slice.call( arguments ) ) ); }; // Set the guid of unique handler to the same of original handler, so it can be removed @@ -910,7 +910,7 @@ if ( jQuery.browser.webkit ) { } // IE doesn't match non-breaking spaces with \s -if ( rnotwhite.test( "\xA0" ) ) { +if ( core_rnotwhite.test( "\xA0" ) ) { trimLeft = /^[\s\xA0]+/; trimRight = /[\s\xA0]+$/; } diff --git a/src/css.js b/src/css.js index 94f8d8903..e3390793a 100644 --- a/src/css.js +++ b/src/css.js @@ -70,7 +70,7 @@ function showHide( elements, show ) { // for such an element if ( (elem.style.display === "" && curCSS( elem, "display" ) === "none") || !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) { - values[ index ] = jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) ); + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); } } else { display = curCSS( elem, "display" ); @@ -434,7 +434,7 @@ function getWidthOrHeight( elem, name, extra ) { // Try to determine the default display value of an element -function defaultDisplay( nodeName ) { +function css_defaultDisplay( nodeName ) { if ( elemdisplay[ nodeName ] ) { return elemdisplay[ nodeName ]; } diff --git a/src/deferred.js b/src/deferred.js index a8410c8be..f0b1f96e6 100644 --- a/src/deferred.js +++ b/src/deferred.js @@ -1,6 +1,3 @@ -var // Static reference to slice - sliceDeferred = [].slice; - jQuery.extend({ Deferred: function( func ) { @@ -93,7 +90,7 @@ jQuery.extend({ // Deferred helper when: function( subordinate /* , ..., subordinateN */ ) { var i = 0, - resolveValues = sliceDeferred.call( arguments ), + resolveValues = core_slice.call( arguments ), length = resolveValues.length, // the count of uncompleted subordinates @@ -106,7 +103,7 @@ jQuery.extend({ updateFunc = function( i, contexts, values ) { return function( value ) { contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments ) : value; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; if( values === progressValues ) { deferred.notifyWith( contexts, values ); } else if ( !( --remaining ) ) { diff --git a/src/effects.js b/src/effects.js index f5c1f8d47..3f0c04847 100644 --- a/src/effects.js +++ b/src/effects.js @@ -269,7 +269,7 @@ function defaultPrefilter( elem, props, opts ) { // inline-level elements accept inline-block; // block-level elements need to be inline with layout - if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === "inline" ) { + if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) { style.display = "inline-block"; } else { diff --git a/src/manipulation.js b/src/manipulation.js index 82823e578..ca5ccf412 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -16,7 +16,7 @@ var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figca "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, rtagName = /<([\w:]+)/, rtbody = /