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