1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-22 15:06:54 -05:00

pretty-print long strings

This commit is contained in:
Ryan Dahl 2019-03-19 13:52:25 -04:00
parent 8f334ae568
commit 842627d6b9
2 changed files with 18 additions and 1 deletions

View file

@ -23,6 +23,8 @@ const DEFAULT_MAX_DEPTH = 4;
// form.
const OBJ_ABBREVIATE_SIZE = 5;
const STR_ABBREVIATE_SIZE = 100;
// Char codes
const CHAR_PERCENT = 37; /* % */
const CHAR_LOWERCASE_S = 115; /* s */
@ -151,7 +153,11 @@ function stringifyWithQuotes(
): string {
switch (typeof value) {
case "string":
return `"${value}"`;
const trunc =
value.length > STR_ABBREVIATE_SIZE
? value.slice(0, STR_ABBREVIATE_SIZE) + "..."
: value;
return JSON.stringify(trunc);
default:
return stringify(value, ctx, level, maxLevel);
}

View file

@ -31,6 +31,17 @@ test(function consoleTestStringifyComplexObjects() {
assertEquals(stringify({ foo: "bar" }), `{ foo: "bar" }`);
});
test(function consoleTestStringifyLongStrings() {
const veryLongString = "a".repeat(200);
// If we stringify an object containing the long string, it gets abbreviated.
let actual = stringify({ veryLongString });
assert(actual.includes("..."));
assert(actual.length < 200);
// However if we stringify the string itself, we get it exactly.
actual = stringify(veryLongString);
assertEquals(actual, veryLongString);
});
test(function consoleTestStringifyCircular() {
class Base {
a = 1;