src/cm/media/js/lib/yui/yui3-3.15.0/build/dump/dump-debug.js
changeset 602 e16a97fb364a
equal deleted inserted replaced
601:d334a616c023 602:e16a97fb364a
       
     1 YUI.add('dump', function (Y, NAME) {
       
     2 
       
     3 /**
       
     4  * Returns a simple string representation of the object or array.
       
     5  * Other types of objects will be returned unprocessed.  Arrays
       
     6  * are expected to be indexed.  Use object notation for
       
     7  * associative arrays.
       
     8  *
       
     9  * If included, the dump method is added to the YUI instance.
       
    10  *
       
    11  * @module dump
       
    12  */
       
    13 
       
    14     var L = Y.Lang,
       
    15         OBJ = '{...}',
       
    16         FUN = 'f(){...}',
       
    17         COMMA = ', ',
       
    18         ARROW = ' => ',
       
    19 
       
    20     /**
       
    21      * Returns a simple string representation of the object or array.
       
    22      * Other types of objects will be returned unprocessed.  Arrays
       
    23      * are expected to be indexed.
       
    24      *
       
    25      * @method dump
       
    26      * @param {Object} o The object to dump.
       
    27      * @param {Number} d How deep to recurse child objects, default 3.
       
    28      * @return {String} the dump result.
       
    29      * @for YUI
       
    30      */
       
    31     dump = function(o, d) {
       
    32         var i, len, s = [], type = L.type(o);
       
    33 
       
    34         // Cast non-objects to string
       
    35         // Skip dates because the std toString is what we want
       
    36         // Skip HTMLElement-like objects because trying to dump
       
    37         // an element will cause an unhandled exception in FF 2.x
       
    38         if (!L.isObject(o)) {
       
    39             return o + '';
       
    40         } else if (type == 'date') {
       
    41             return o;
       
    42         } else if (o.nodeType && o.tagName) {
       
    43             return o.tagName + '#' + o.id;
       
    44         } else if (o.document && o.navigator) {
       
    45             return 'window';
       
    46         } else if (o.location && o.body) {
       
    47             return 'document';
       
    48         } else if (type == 'function') {
       
    49             return FUN;
       
    50         }
       
    51 
       
    52         // dig into child objects the depth specifed. Default 3
       
    53         d = (L.isNumber(d)) ? d : 3;
       
    54 
       
    55         // arrays [1, 2, 3]
       
    56         if (type == 'array') {
       
    57             s.push('[');
       
    58             for (i = 0, len = o.length; i < len; i = i + 1) {
       
    59                 if (L.isObject(o[i])) {
       
    60                     s.push((d > 0) ? L.dump(o[i], d - 1) : OBJ);
       
    61                 } else {
       
    62                     s.push(o[i]);
       
    63                 }
       
    64                 s.push(COMMA);
       
    65             }
       
    66             if (s.length > 1) {
       
    67                 s.pop();
       
    68             }
       
    69             s.push(']');
       
    70         // regexp /foo/
       
    71         } else if (type == 'regexp') {
       
    72             s.push(o.toString());
       
    73         // objects {k1 => v1, k2 => v2}
       
    74         } else {
       
    75             s.push('{');
       
    76             for (i in o) {
       
    77                 if (o.hasOwnProperty(i)) {
       
    78                     try {
       
    79                         s.push(i + ARROW);
       
    80                         if (L.isObject(o[i])) {
       
    81                             s.push((d > 0) ? L.dump(o[i], d - 1) : OBJ);
       
    82                         } else {
       
    83                             s.push(o[i]);
       
    84                         }
       
    85                         s.push(COMMA);
       
    86                     } catch (e) {
       
    87                         s.push('Error: ' + e.message);
       
    88                     }
       
    89                 }
       
    90             }
       
    91             if (s.length > 1) {
       
    92                 s.pop();
       
    93             }
       
    94             s.push('}');
       
    95         }
       
    96 
       
    97         return s.join('');
       
    98     };
       
    99 
       
   100     Y.dump = dump;
       
   101     L.dump = dump;
       
   102 
       
   103 
       
   104 
       
   105 }, '@VERSION@', {"requires": ["yui-base"]});