mirror of
https://github.com/nodejs/node.git
synced 2024-11-29 23:16:30 +01:00
parent
98b64422bb
commit
6139459d45
33
lib/util.js
33
lib/util.js
@ -211,7 +211,7 @@ function formatValue(ctx, value, recurseTimes) {
|
||||
base = ' ' + value.toUTCString();
|
||||
}
|
||||
|
||||
if (keys.length === 0) {
|
||||
if (keys.length === 0 && (!array || value.length == 0)) {
|
||||
return braces[0] + base + braces[1];
|
||||
}
|
||||
|
||||
@ -225,9 +225,14 @@ function formatValue(ctx, value, recurseTimes) {
|
||||
|
||||
ctx.seen.push(value);
|
||||
|
||||
var output = keys.map(function(key) {
|
||||
return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
|
||||
});
|
||||
var output;
|
||||
if (array) {
|
||||
output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
|
||||
} else {
|
||||
output = keys.map(function(key) {
|
||||
return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
|
||||
});
|
||||
}
|
||||
|
||||
ctx.seen.pop();
|
||||
|
||||
@ -259,6 +264,26 @@ function formatPrimitive(ctx, value) {
|
||||
}
|
||||
|
||||
|
||||
function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
|
||||
var output = [];
|
||||
for (var i = 0, l = value.length; i < l; ++i) {
|
||||
if (Object.prototype.hasOwnProperty.call(value, String(i))) {
|
||||
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
|
||||
String(i), true));
|
||||
} else {
|
||||
output.push('');
|
||||
}
|
||||
}
|
||||
keys.forEach(function(key) {
|
||||
if (!key.match(/^\d+$/)) {
|
||||
output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
|
||||
key, true));
|
||||
}
|
||||
});
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
|
||||
var name, str;
|
||||
if (value.__lookupGetter__) {
|
||||
|
@ -33,3 +33,11 @@ var orig = util.inspect(d);
|
||||
Date2.prototype.foo = 'bar';
|
||||
var after = util.inspect(d);
|
||||
assert.equal(orig, after);
|
||||
|
||||
// test for sparse array
|
||||
var a = [ 'foo', 'bar', 'baz' ];
|
||||
assert.equal(util.inspect(a), "[ 'foo', 'bar', 'baz' ]");
|
||||
delete a[1];
|
||||
assert.equal(util.inspect(a), "[ 'foo', , 'baz' ]");
|
||||
assert.equal(util.inspect(a, true), "[ 'foo', , 'baz', [length]: 3 ]");
|
||||
assert.equal(util.inspect(new Array(5)), '[ , , , , ]');
|
||||
|
Loading…
Reference in New Issue
Block a user