diff options
| author | Aaron Power <theaaronepower@gmail.com> | 2018-08-27 16:46:00 +0100 |
|---|---|---|
| committer | Ryan Dahl <ry@tinyclouds.org> | 2018-08-27 13:45:29 -0400 |
| commit | 0f1db89aa664fe05efae2136d7456465403df30f (patch) | |
| tree | b545c169b97d1d0e456394fbb988b90d785be197 /js | |
| parent | 224cfc8c74133a6b4fe6c9e96a90925ebaf066aa (diff) | |
Fixed printing strings in arrays & objects without quotes
Diffstat (limited to 'js')
| -rw-r--r-- | js/console.ts | 17 | ||||
| -rw-r--r-- | js/unit_tests.ts | 9 |
2 files changed, 23 insertions, 3 deletions
diff --git a/js/console.ts b/js/console.ts index 2eb5e27c0..c49a7621d 100644 --- a/js/console.ts +++ b/js/console.ts @@ -13,7 +13,7 @@ function getClassInstanceName(instance: any): string { } // tslint:disable-next-line:no-any -function stringify(ctx: ConsoleContext, value: any): string { +export function stringify(ctx: ConsoleContext, value: any): string { switch (typeof value) { case "string": return value; @@ -42,7 +42,7 @@ function stringify(ctx: ConsoleContext, value: any): string { if (Array.isArray(value)) { for (const el of value) { - entries.push(stringify(ctx, el)); + entries.push(stringifyWithQuotes(ctx, el)); } ctx.delete(value); @@ -61,7 +61,7 @@ function stringify(ctx: ConsoleContext, value: any): string { } for (const key of Object.keys(value)) { - entries.push(`${key}: ${stringify(ctx, value[key])}`); + entries.push(`${key}: ${stringifyWithQuotes(ctx, value[key])}`); } ctx.delete(value); @@ -83,6 +83,17 @@ function stringify(ctx: ConsoleContext, value: any): string { } } +// Print strings when they are inside of arrays or objects with quotes +// tslint:disable-next-line:no-any +function stringifyWithQuotes(ctx: ConsoleContext, value: any): string { + switch (typeof value) { + case "string": + return `"${value}"`; + default: + return stringify(ctx, value); + } +} + // tslint:disable-next-line:no-any function stringifyArgs(args: any[]): string { const out: string[] = []; diff --git a/js/unit_tests.ts b/js/unit_tests.ts index 6eebf8860..48b7e6bb3 100644 --- a/js/unit_tests.ts +++ b/js/unit_tests.ts @@ -5,6 +5,7 @@ import { test, assert, assertEqual } from "./testing/testing.ts"; import { readFileSync } from "deno"; +import { stringify } from "./console.ts"; import * as deno from "deno"; import "./compiler_test.ts"; @@ -25,6 +26,14 @@ test(function tests_console_assert() { assertEqual(hasThrown, true); }); +test(function tests_console_stringify_complex_objects() { + // tslint:disable:no-any + assertEqual("foo", stringify(new Set<any>(), "foo")); + assertEqual(`[ "foo", "bar" ]`, stringify(new Set<any>(), ["foo", "bar"])); + assertEqual(`{ foo: "bar" }`, stringify(new Set<any>(), { foo: "bar" })); + // tslint:enable:no-any +}); + test(function tests_console_stringify_circular() { class Base { a = 1; |
