Fixing endlines.
[jquery.git] / src / data.js
index 500f7ea..8fa62dc 100644 (file)
-var expando = "jQuery" + now(), uuid = 0, windowData = {};\r
-var emptyObject = {};\r
-\r
-jQuery.extend({\r
-       cache: {},\r
-       \r
-       expando:expando,\r
-\r
-       data: function( elem, name, data ) {\r
-               elem = elem == window ?\r
-                       windowData :\r
-                       elem;\r
-\r
-               var id = elem[ expando ], cache = jQuery.cache, thisCache;\r
-\r
-               // Handle the case where there's no name immediately\r
-               if ( !name && !id ) {\r
-                       return null;\r
-               }\r
-\r
-               // Compute a unique ID for the element\r
-               if ( !id ) { \r
-                       id = ++uuid;\r
-               }\r
-\r
-               // Avoid generating a new cache unless none exists and we\r
-               // want to manipulate it.\r
-               if ( cache[ id ] ) {\r
-                       thisCache = cache[ id ];\r
-               } else if ( typeof data === "undefined" ) {\r
-                       thisCache = emptyObject;\r
-               } else {\r
-                       thisCache = cache[ id ] = {};\r
-               }\r
-               \r
-               // Prevent overriding the named cache with undefined values\r
-               if ( data !== undefined ) {\r
-                       elem[ expando ] = id;\r
-                       thisCache[ name ] = data;\r
-               }\r
-               \r
-               return name ? thisCache[ name ] : thisCache;\r
-       },\r
-\r
-       removeData: function( elem, name ) {\r
-               elem = elem == window ?\r
-                       windowData :\r
-                       elem;\r
-\r
-               var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];\r
-\r
-               // If we want to remove a specific section of the element's data\r
-               if ( name ) {\r
-                       if ( thisCache ) {\r
-                               // Remove the section of cache data\r
-                               delete thisCache[ name ];\r
-\r
-                               // If we've removed all the data, remove the element's cache\r
-                               if ( jQuery.isEmptyObject(thisCache) ) {\r
-                                       jQuery.removeData( elem );\r
-                               }\r
-                       }\r
-\r
-               // Otherwise, we want to remove all of the element's data\r
-               } else {\r
-                       // Clean up the element expando\r
-                       try {\r
-                               delete elem[ expando ];\r
-                       } catch( e ) {\r
-                               // IE has trouble directly removing the expando\r
-                               // but it's ok with using removeAttribute\r
-                               if ( elem.removeAttribute ) {\r
-                                       elem.removeAttribute( expando );\r
-                               }\r
-                       }\r
-\r
-                       // Completely remove the data cache\r
-                       delete cache[ id ];\r
-               }\r
-       },\r
-       \r
-       queue: function( elem, type, data ) {\r
-               if( !elem ) return;\r
-\r
-               type = (type || "fx") + "queue";\r
-               var q = jQuery.data( elem, type );\r
-\r
-               // Speed up dequeue by getting out quickly if this is just a lookup\r
-               if( !data ) return q || [];\r
-\r
-               if ( !q || jQuery.isArray(data) )\r
-                       q = jQuery.data( elem, type, jQuery.makeArray(data) );\r
-               else\r
-                       q.push( data );\r
-\r
-               return q;\r
-       },\r
-\r
-       dequeue: function( elem, type ){\r
-               type = type || "fx";\r
-\r
-               var queue = jQuery.queue( elem, type ), fn = queue.shift();\r
-\r
-               // If the fx queue is dequeued, always remove the progress sentinel\r
-               if( fn === "inprogress" ) fn = queue.shift();\r
-\r
-               if( fn ) {\r
-                       // Add a progress sentinel to prevent the fx queue from being\r
-                       // automatically dequeued\r
-                       if( type == "fx" ) queue.unshift("inprogress");\r
-\r
-                       fn.call(elem, function() { jQuery.dequeue(elem, type); });\r
-               }\r
-       }\r
-});\r
-\r
-jQuery.fn.extend({\r
-       data: function( key, value ){\r
-               if ( typeof key === "undefined" && this.length ) {\r
-                       return jQuery.data( this[0] );\r
-               }\r
-\r
-               var parts = key.split(".");\r
-               parts[1] = parts[1] ? "." + parts[1] : "";\r
-\r
-               if ( value === undefined ) {\r
-                       var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);\r
-\r
-                       if ( data === undefined && this.length )\r
-                               data = jQuery.data( this[0], key );\r
-\r
-                       return data === undefined && parts[1] ?\r
-                               this.data( parts[0] ) :\r
-                               data;\r
-               } else\r
-                       return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){\r
-                               jQuery.data( this, key, value );\r
-                       });\r
-       },\r
-\r
-       removeData: function( key ){\r
-               return this.each(function(){\r
-                       jQuery.removeData( this, key );\r
-               });\r
-       },\r
-       queue: function(type, data){\r
-               if ( typeof type !== "string" ) {\r
-                       data = type;\r
-                       type = "fx";\r
-               }\r
-\r
-               if ( data === undefined )\r
-                       return jQuery.queue( this[0], type );\r
-\r
-               return this.each(function(i, elem){\r
-                       var queue = jQuery.queue( this, type, data );\r
-\r
-                       if( type == "fx" && queue[0] !== "inprogress" )\r
-                               jQuery.dequeue( this, type )\r
-               });\r
-       },\r
-       dequeue: function(type){\r
-               return this.each(function(){\r
-                       jQuery.dequeue( this, type );\r
-               });\r
-       },\r
-       clearQueue: function(type){\r
-               return this.queue( type || "fx", [] );\r
-       }\r
-});\r
+var expando = "jQuery" + now(), uuid = 0, windowData = {};
+var emptyObject = {};
+
+jQuery.extend({
+       cache: {},
+       
+       expando:expando,
+
+       data: function( elem, name, data ) {
+               elem = elem == window ?
+                       windowData :
+                       elem;
+
+               var id = elem[ expando ], cache = jQuery.cache, thisCache;
+
+               // Handle the case where there's no name immediately
+               if ( !name && !id ) {
+                       return null;
+               }
+
+               // Compute a unique ID for the element
+               if ( !id ) { 
+                       id = ++uuid;
+               }
+
+               // Avoid generating a new cache unless none exists and we
+               // want to manipulate it.
+               if ( cache[ id ] ) {
+                       thisCache = cache[ id ];
+               } else if ( typeof data === "undefined" ) {
+                       thisCache = emptyObject;
+               } else {
+                       thisCache = cache[ id ] = {};
+               }
+               
+               // Prevent overriding the named cache with undefined values
+               if ( data !== undefined ) {
+                       elem[ expando ] = id;
+                       thisCache[ name ] = data;
+               }
+               
+               return name ? thisCache[ name ] : thisCache;
+       },
+
+       removeData: function( elem, name ) {
+               elem = elem == window ?
+                       windowData :
+                       elem;
+
+               var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
+
+               // If we want to remove a specific section of the element's data
+               if ( name ) {
+                       if ( thisCache ) {
+                               // Remove the section of cache data
+                               delete thisCache[ name ];
+
+                               // If we've removed all the data, remove the element's cache
+                               if ( jQuery.isEmptyObject(thisCache) ) {
+                                       jQuery.removeData( elem );
+                               }
+                       }
+
+               // Otherwise, we want to remove all of the element's data
+               } else {
+                       // Clean up the element expando
+                       try {
+                               delete elem[ expando ];
+                       } catch( e ) {
+                               // IE has trouble directly removing the expando
+                               // but it's ok with using removeAttribute
+                               if ( elem.removeAttribute ) {
+                                       elem.removeAttribute( expando );
+                               }
+                       }
+
+                       // Completely remove the data cache
+                       delete cache[ id ];
+               }
+       },
+       
+       queue: function( elem, type, data ) {
+               if( !elem ) return;
+
+               type = (type || "fx") + "queue";
+               var q = jQuery.data( elem, type );
+
+               // Speed up dequeue by getting out quickly if this is just a lookup
+               if( !data ) return q || [];
+
+               if ( !q || jQuery.isArray(data) )
+                       q = jQuery.data( elem, type, jQuery.makeArray(data) );
+               else
+                       q.push( data );
+
+               return q;
+       },
+
+       dequeue: function( elem, type ){
+               type = type || "fx";
+
+               var queue = jQuery.queue( elem, type ), fn = queue.shift();
+
+               // If the fx queue is dequeued, always remove the progress sentinel
+               if( fn === "inprogress" ) fn = queue.shift();
+
+               if( fn ) {
+                       // Add a progress sentinel to prevent the fx queue from being
+                       // automatically dequeued
+                       if( type == "fx" ) queue.unshift("inprogress");
+
+                       fn.call(elem, function() { jQuery.dequeue(elem, type); });
+               }
+       }
+});
+
+jQuery.fn.extend({
+       data: function( key, value ){
+               if ( typeof key === "undefined" && this.length ) {
+                       return jQuery.data( this[0] );
+               }
+
+               var parts = key.split(".");
+               parts[1] = parts[1] ? "." + parts[1] : "";
+
+               if ( value === undefined ) {
+                       var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+                       if ( data === undefined && this.length )
+                               data = jQuery.data( this[0], key );
+
+                       return data === undefined && parts[1] ?
+                               this.data( parts[0] ) :
+                               data;
+               } else
+                       return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
+                               jQuery.data( this, key, value );
+                       });
+       },
+
+       removeData: function( key ){
+               return this.each(function(){
+                       jQuery.removeData( this, key );
+               });
+       },
+       queue: function(type, data){
+               if ( typeof type !== "string" ) {
+                       data = type;
+                       type = "fx";
+               }
+
+               if ( data === undefined )
+                       return jQuery.queue( this[0], type );
+
+               return this.each(function(i, elem){
+                       var queue = jQuery.queue( this, type, data );
+
+                       if( type == "fx" && queue[0] !== "inprogress" )
+                               jQuery.dequeue( this, type )
+               });
+       },
+       dequeue: function(type){
+               return this.each(function(){
+                       jQuery.dequeue( this, type );
+               });
+       },
+       clearQueue: function(type){
+               return this.queue( type || "fx", [] );
+       }
+});