0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-03 09:31:22 -05:00

feat(ext/console): Compact empty iterables when calling Deno.inspect with compact false (#14387)

This commit is contained in:
Ben Heidemann 2022-04-26 12:04:28 +01:00 committed by GitHub
parent e24b8f075e
commit dc4ab1d934
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 75 additions and 4 deletions

View file

@ -1939,6 +1939,71 @@ Deno.test(function inspectColors() {
assertStringIncludes(Deno.inspect(1, { colors: true }), "\x1b[");
});
Deno.test(function inspectEmptyArray() {
const arr: string[] = [];
assertEquals(
Deno.inspect(arr, {
compact: false,
trailingComma: true,
}),
"[\n]",
);
});
Deno.test(function inspectDeepEmptyArray() {
const obj = {
arr: [],
};
assertEquals(
Deno.inspect(obj, {
compact: false,
trailingComma: true,
}),
`{
arr: [
],
}`,
);
});
Deno.test(function inspectEmptyMap() {
const map = new Map();
assertEquals(
Deno.inspect(map, {
compact: false,
trailingComma: true,
}),
"Map {\n}",
);
});
Deno.test(function inspectEmptyMap() {
const set = new Set();
assertEquals(
Deno.inspect(set, {
compact: false,
trailingComma: true,
}),
"Set {\n}",
);
});
Deno.test(function inspectEmptyMap() {
const typedArray = new Uint8Array(0);
assertEquals(
Deno.inspect(typedArray, {
compact: false,
trailingComma: true,
}),
"Uint8Array(0) [\n]",
);
});
Deno.test(function inspectStringAbbreviation() {
const LONG_STRING =
"This is a really long string which will be abbreviated with ellipsis.";

View file

@ -465,12 +465,18 @@
const entryIndentation = `,\n${
StringPrototypeRepeat(DEFAULT_INDENT, level + 1)
}`;
const closingIndentation = `${inspectOptions.trailingComma ? "," : ""}\n${
StringPrototypeRepeat(DEFAULT_INDENT, level)
}`;
const closingDelimIndentation = StringPrototypeRepeat(
DEFAULT_INDENT,
level,
);
const closingIndentation = `${
inspectOptions.trailingComma ? "," : ""
}\n${closingDelimIndentation}`;
let iContent;
if (options.group && entries.length > MIN_GROUP_LENGTH) {
if (entries.length === 0 && !inspectOptions.compact) {
iContent = `\n${closingDelimIndentation}`;
} else if (options.group && entries.length > MIN_GROUP_LENGTH) {
const groups = groupEntries(entries, level, value);
iContent = `${initIndentation}${
ArrayPrototypeJoin(groups, entryIndentation)