summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldir Pimenta <waldyrious@gmail.com>2023-02-08 09:14:40 +0000
committerGitHub <noreply@github.com>2023-02-08 18:14:40 +0900
commit19543ffec300390f20b577b29d92a58540aaef70 (patch)
tree00a7b1f621d1ddbb2da61e7e6e7dceda23ad3e6e
parent0597499e9ea09bb89409265b31e39baed2733a34 (diff)
fix(ext/console): Only right-align integers in console.table() (#17389)
-rw-r--r--cli/tests/unit/console_test.ts63
-rw-r--r--ext/console/02_console.js8
2 files changed, 49 insertions, 22 deletions
diff --git a/cli/tests/unit/console_test.ts b/cli/tests/unit/console_test.ts
index ccc8638d2..239a8bf26 100644
--- a/cli/tests/unit/console_test.ts
+++ b/cli/tests/unit/console_test.ts
@@ -1395,7 +1395,8 @@ Deno.test(function consoleTable() {
console.table({ a: "test", b: 1 });
assertEquals(
stripColor(out.toString()),
- `┌───────┬────────┐
+ `\
+┌───────┬────────┐
│ (idx) │ Values │
├───────┼────────┤
│ a │ "test" │
@@ -1408,7 +1409,8 @@ Deno.test(function consoleTable() {
console.table({ a: { b: 10 }, b: { b: 20, c: 30 } }, ["c"]);
assertEquals(
stripColor(out.toString()),
- `┌───────┬────┐
+ `\
+┌───────┬────┐
│ (idx) │ c │
├───────┼────┤
│ a │ │
@@ -1418,10 +1420,26 @@ Deno.test(function consoleTable() {
);
});
mockConsole((console, out) => {
+ console.table([[1, 1], [234, 2.34], [56789, 56.789]]);
+ assertEquals(
+ stripColor(out.toString()),
+ `\
+┌───────┬───────┬────────┐
+│ (idx) │ 0 │ 1 │
+├───────┼───────┼────────┤
+│ 0 │ 1 │ 1 │
+│ 1 │ 234 │ 2.34 │
+│ 2 │ 56789 │ 56.789 │
+└───────┴───────┴────────┘
+`,
+ );
+ });
+ mockConsole((console, out) => {
console.table([1, 2, [3, [4]], [5, 6], [[7], [8]]]);
assertEquals(
stripColor(out.toString()),
- `┌───────┬───────┬───────┬────────┐
+ `\
+┌───────┬───────┬───────┬────────┐
│ (idx) │ 0 │ 1 │ Values │
├───────┼───────┼───────┼────────┤
│ 0 │ │ │ 1 │
@@ -1437,7 +1455,8 @@ Deno.test(function consoleTable() {
console.table(new Set([1, 2, 3, "test"]));
assertEquals(
stripColor(out.toString()),
- `┌────────────┬────────┐
+ `\
+┌────────────┬────────┐
│ (iter idx) │ Values │
├────────────┼────────┤
│ 0 │ 1 │
@@ -1457,7 +1476,8 @@ Deno.test(function consoleTable() {
);
assertEquals(
stripColor(out.toString()),
- `┌────────────┬─────┬────────┐
+ `\
+┌────────────┬─────┬────────┐
│ (iter idx) │ Key │ Values │
├────────────┼─────┼────────┤
│ 0 │ 1 │ "one" │
@@ -1476,7 +1496,8 @@ Deno.test(function consoleTable() {
});
assertEquals(
stripColor(out.toString()),
- `┌───────┬───────────┬───────────────────┬────────┐
+ `\
+┌───────┬───────────┬───────────────────┬────────┐
│ (idx) │ c │ e │ Values │
├───────┼───────────┼───────────────────┼────────┤
│ a │ │ │ true │
@@ -1498,7 +1519,8 @@ Deno.test(function consoleTable() {
]);
assertEquals(
stripColor(out.toString()),
- `┌───────┬────────┬──────────────────────┬────┬────────┐
+ `\
+┌───────┬────────┬──────────────────────┬────┬────────┐
│ (idx) │ 0 │ 1 │ a │ Values │
├───────┼────────┼──────────────────────┼────┼────────┤
│ 0 │ │ │ │ 1 │
@@ -1514,7 +1536,8 @@ Deno.test(function consoleTable() {
console.table([]);
assertEquals(
stripColor(out.toString()),
- `┌───────┐
+ `\
+┌───────┐
│ (idx) │
├───────┤
└───────┘
@@ -1525,7 +1548,8 @@ Deno.test(function consoleTable() {
console.table({});
assertEquals(
stripColor(out.toString()),
- `┌───────┐
+ `\
+┌───────┐
│ (idx) │
├───────┤
└───────┘
@@ -1536,7 +1560,8 @@ Deno.test(function consoleTable() {
console.table(new Set());
assertEquals(
stripColor(out.toString()),
- `┌────────────┐
+ `\
+┌────────────┐
│ (iter idx) │
├────────────┤
└────────────┘
@@ -1547,7 +1572,8 @@ Deno.test(function consoleTable() {
console.table(new Map());
assertEquals(
stripColor(out.toString()),
- `┌────────────┐
+ `\
+┌────────────┐
│ (iter idx) │
├────────────┤
└────────────┘
@@ -1562,7 +1588,8 @@ Deno.test(function consoleTable() {
console.table(["Hello", "你好", "Amapá"]);
assertEquals(
stripColor(out.toString()),
- `┌───────┬─────────┐
+ `\
+┌───────┬─────────┐
│ (idx) │ Values │
├───────┼─────────┤
│ 0 │ "Hello" │
@@ -1579,7 +1606,8 @@ Deno.test(function consoleTable() {
]);
assertEquals(
stripColor(out.toString()),
- `┌───────┬───┬───┐
+ `\
+┌───────┬───┬───┐
│ (idx) │ 0 │ 1 │
├───────┼───┼───┤
│ 0 │ 1 │ 2 │
@@ -1592,7 +1620,8 @@ Deno.test(function consoleTable() {
console.table({ 1: { a: 4, b: 5 }, 2: null, 3: { b: 6, c: 7 } }, ["b"]);
assertEquals(
stripColor(out.toString()),
- `┌───────┬───┐
+ `\
+┌───────┬───┐
│ (idx) │ b │
├───────┼───┤
│ 1 │ 5 │
@@ -1606,7 +1635,8 @@ Deno.test(function consoleTable() {
console.table([{ a: 0 }, { a: 1, b: 1 }, { a: 2 }, { a: 3, b: 3 }]);
assertEquals(
stripColor(out.toString()),
- `┌───────┬───┬───┐
+ `\
+┌───────┬───┬───┐
│ (idx) │ a │ b │
├───────┼───┼───┤
│ 0 │ 0 │ │
@@ -1624,7 +1654,8 @@ Deno.test(function consoleTable() {
);
assertEquals(
stripColor(out.toString()),
- `┌───────┬───┬───┬───┐
+ `\
+┌───────┬───┬───┬───┐
│ (idx) │ a │ b │ c │
├───────┼───┼───┼───┤
│ 0 │ 0 │ │ │
diff --git a/ext/console/02_console.js b/ext/console/02_console.js
index 0bafd532d..a8b335b94 100644
--- a/ext/console/02_console.js
+++ b/ext/console/02_console.js
@@ -47,6 +47,7 @@ const {
StringPrototypeIncludes,
StringPrototypeStartsWith,
TypeError,
+ NumberIsInteger,
NumberParseInt,
RegExp,
RegExpPrototype,
@@ -232,11 +233,6 @@ function renderRow(row, columnWidths, columnRightAlign) {
return out;
}
-function canRightAlign(value) {
- const isNumber = !isNaN(value);
- return isNumber;
-}
-
function cliTable(head, columns) {
const rows = [];
const columnWidths = ArrayPrototypeMap(head, (h) => getStringWidth(h));
@@ -257,7 +253,7 @@ function cliTable(head, columns) {
const width = columnWidths[i] || 0;
const counted = getStringWidth(value);
columnWidths[i] = MathMax(width, counted);
- columnRightAlign[i] &= canRightAlign(value);
+ columnRightAlign[i] &= NumberIsInteger(+value);
}
}