src/cm/media/js/lib/yui/yui_3.10.3/build/dump/dump-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('dump', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * Returns a simple string representation of the object or array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * Other types of objects will be returned unprocessed.  Arrays
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * are expected to be indexed.  Use object notation for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * associative arrays.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 * If included, the dump method is added to the YUI instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
 * @module dump
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    var L = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
        OBJ = '{...}',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
        FUN = 'f(){...}',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
        COMMA = ', ',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
        ARROW = ' => ',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
     * Returns a simple string representation of the object or array.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
     * Other types of objects will be returned unprocessed.  Arrays
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
     * are expected to be indexed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
     * @method dump
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
     * @param {Object} o The object to dump.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
     * @param {Number} d How deep to recurse child objects, default 3.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
     * @return {String} the dump result.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
     * @for YUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    dump = function(o, d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        var i, len, s = [], type = L.type(o);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
        // Cast non-objects to string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        // Skip dates because the std toString is what we want
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        // Skip HTMLElement-like objects because trying to dump
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        // an element will cause an unhandled exception in FF 2.x
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        if (!L.isObject(o)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
            return o + '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        } else if (type == 'date') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
            return o;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        } else if (o.nodeType && o.tagName) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
            return o.tagName + '#' + o.id;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        } else if (o.document && o.navigator) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
            return 'window';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        } else if (o.location && o.body) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
            return 'document';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        } else if (type == 'function') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
            return FUN;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        // dig into child objects the depth specifed. Default 3
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
        d = (L.isNumber(d)) ? d : 3;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        // arrays [1, 2, 3]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        if (type == 'array') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
            s.push('[');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
            for (i = 0, len = o.length; i < len; i = i + 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
                if (L.isObject(o[i])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
                    s.push((d > 0) ? L.dump(o[i], d - 1) : OBJ);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
                    s.push(o[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
                s.push(COMMA);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
            if (s.length > 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
                s.pop();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
            s.push(']');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
        // regexp /foo/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
        } else if (type == 'regexp') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
            s.push(o.toString());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
        // objects {k1 => v1, k2 => v2}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
            s.push('{');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
            for (i in o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
                if (o.hasOwnProperty(i)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
                    try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
                        s.push(i + ARROW);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
                        if (L.isObject(o[i])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
                            s.push((d > 0) ? L.dump(o[i], d - 1) : OBJ);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
                            s.push(o[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
                        s.push(COMMA);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
                    } catch (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
                        s.push('Error: ' + e.message);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
            if (s.length > 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
                s.pop();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
            s.push('}');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        return s.join('');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
    Y.dump = dump;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
    L.dump = dump;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
}, '3.10.3', {"requires": ["yui-base"]});