From b97b003c352cf9da5885ac0a5516fee0a767f134 Mon Sep 17 00:00:00 2001 From: Ruben Bridgewater Date: Wed, 5 Jun 2019 14:57:46 +0200 Subject: [PATCH] util: use average bias while grouping arrays This makes sure that strongly deviating entry length are taken into account while grouping arrays. PR-URL: https://github.com/nodejs/node/pull/28070 Refs: https://github.com/nodejs/node/issues/27690 Reviewed-By: James M Snell --- lib/internal/util/inspect.js | 3 ++- test/parallel/test-util-inspect.js | 14 ++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index ed68ebed163..b8f1c4f0af9 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -997,7 +997,8 @@ function groupArrayElements(ctx, output, value) { (totalLength / actualMax > 5 || maxLength <= 6)) { const approxCharHeights = 2.5; - const biasedMax = Math.max(actualMax - 4, 1); + const averageBias = Math.sqrt(actualMax - totalLength / output.length); + const biasedMax = Math.max(actualMax - 3 - averageBias, 1); // Dynamically check how many columns seem possible. const columns = Math.min( // Ideally a square should be drawn. We expect a character to be about 2.5 diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index c264c409e59..e843cc49a82 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -2274,14 +2274,12 @@ assert.strictEqual( expected = [ '[', - ' 1, 1, 1,', - ' 1, 1, 1,', - ' 1, 1, 1,', - ' 1, 1, 1,', - ' 1, 1, 1,', - ' 1, 1, 1,', - ' 1, 1, 1,', - ' 1, 1, 1,', + ' 1, 1, 1, 1,', + ' 1, 1, 1, 1,', + ' 1, 1, 1, 1,', + ' 1, 1, 1, 1,', + ' 1, 1, 1, 1,', + ' 1, 1, 1, 1,', ' 1, 1, 123456789', ']' ].join('\n');