dump-debug.js revision 7519ed887019110447110651c31391077d98e2c0
/**
* Returns a simple string representation of the object or array.
* Other types of objects will be returned unprocessed. Arrays
* are expected to be indexed. Use object notation for
* associative arrays.
*
* @todo dumping a window is causing an unhandled exception in
* FireFox. Trying to account for it is hanging FireFox.
* Could be a FireBug interaction.
*
* @method dump
* @for YUI
* @param o {Object} The object to dump
* @param d {int} How deep to recurse child objects, default 3
* @return {String} the dump result
*/
dump = function(o, d) {
var i, len, s = [];
// Cast non-objects to string
// Skip dates because the std toString is what we want
// Skip HTMLElement-like objects because trying to dump
// an element will cause an unhandled exception in FF 2.x
if (!L.isObject(o)) {
return o + "";
} else if (o instanceof Date || ("nodeType" in o && "tagName" in o)) {
return o;
} else if (L.isFunction(o)) {
return FUN;
}
// dig into child objects the depth specifed. Default 3
d = (L.isNumber(d)) ? d : 3;
// arrays [1, 2, 3]
if (L.isArray(o)) {
s.push("[");
if (L.isObject(o[i])) {
} else {
s.push(o[i]);
}
}
if (s.length > 1) {
s.pop();
}
s.push("]");
// objects {k1 => v1, k2 => v2}
} else {
s.push("{");
for (i in o) {
if (Y.Object.owns(o, i)) {
if (L.isObject(o[i])) {
} else {
s.push(o[i]);
}
}
}
if (s.length > 1) {
s.pop();
}
s.push("}");
}
return s.join("");
};
}, "3.0.0");