summaryrefslogtreecommitdiff
path: root/lib/internal/util
diff options
context:
space:
mode:
Diffstat (limited to 'lib/internal/util')
-rw-r--r--lib/internal/util/inspect.js39
1 files changed, 6 insertions, 33 deletions
diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js
index 1292293cc6..e9dc8d83ea 100644
--- a/lib/internal/util/inspect.js
+++ b/lib/internal/util/inspect.js
@@ -127,8 +127,6 @@ const numberRegExp = /^(0|[1-9][0-9]*)$/;
const coreModuleRegExp = /^ at (?:[^/\\(]+ \(|)((?<![/\\]).+)\.js:\d+:\d+\)?$/;
const nodeModulesRegExp = /[/\\]node_modules[/\\](.+?)(?=[/\\])/g;
-const readableRegExps = {};
-
const kMinLineLength = 16;
// Constants to map the iterator state.
@@ -1080,37 +1078,12 @@ function formatBigInt(fn, value) {
function formatPrimitive(fn, value, ctx) {
if (typeof value === 'string') {
if (ctx.compact !== true &&
- ctx.indentationLvl + value.length + 4 > ctx.breakLength &&
- value.length > kMinLineLength) {
- // Subtract the potential quotes, the space and the plus as well (4).
- const rawMaxLineLength = ctx.breakLength - ctx.indentationLvl - 4;
- const maxLineLength = Math.max(rawMaxLineLength, kMinLineLength);
- const lines = Math.ceil(value.length / maxLineLength);
- const averageLineLength = Math.ceil(value.length / lines);
- const divisor = Math.max(averageLineLength, kMinLineLength);
- if (readableRegExps[divisor] === undefined) {
- // Build a new RegExp that naturally breaks text into multiple lines.
- //
- // Rules
- // 1. Greedy match all text up the max line length that ends with a
- // whitespace or the end of the string.
- // 2. If none matches, non-greedy match any text up to a whitespace or
- // the end of the string.
- //
- // eslint-disable-next-line max-len, node-core/no-unescaped-regexp-dot
- readableRegExps[divisor] = new RegExp(`(.|\\n){1,${divisor}}(\\s|$)|(\\n|.)+?(\\s|$)`, 'gm');
- }
- const matches = value.match(readableRegExps[divisor]);
- if (matches.length > 1) {
- const indent = ' '.repeat(ctx.indentationLvl);
- let res = `${fn(strEscape(matches[0]), 'string')} +\n`;
- const lastIndex = matches.length - 1;
- for (let i = 1; i < lastIndex; i++) {
- res += `${indent} ${fn(strEscape(matches[i]), 'string')} +\n`;
- }
- res += `${indent} ${fn(strEscape(matches[lastIndex]), 'string')}`;
- return res;
- }
+ value.length > kMinLineLength &&
+ value.length > ctx.breakLength - ctx.indentationLvl - 4) {
+ return value
+ .split(/(?<=\n)/)
+ .map((line) => fn(strEscape(line), 'string'))
+ .join(` +\n${' '.repeat(ctx.indentationLvl + 2)}`);
}
return fn(strEscape(value), 'string');
}