summaryrefslogtreecommitdiff
path: root/lib/console.js
diff options
context:
space:
mode:
authorRich Trott <rtrott@gmail.com>2017-08-23 20:36:54 -0700
committerJames M Snell <jasnell@gmail.com>2017-08-25 11:29:33 -0700
commitaf11867b4180b033320e4f0c7d52c2bcfb957852 (patch)
tree066a75b82d826a6ec85efd8858995e724619f167 /lib/console.js
parenta1d34b3f491ce8e9c34cbc5ddf4e9052b0ed0a01 (diff)
downloadandroid-node-v8-af11867b4180b033320e4f0c7d52c2bcfb957852.tar.gz
android-node-v8-af11867b4180b033320e4f0c7d52c2bcfb957852.tar.bz2
android-node-v8-af11867b4180b033320e4f0c7d52c2bcfb957852.zip
console: improve console.group()
Preserve indentation for multiline strings, objects that span multiple lines, etc. also make groupIndent non-enumerable Hide the internal `groupIndent` key a bit by making it non-enumerable and non-configurable. PR-URL: https://github.com/nodejs/node/pull/14999 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Timothy Gu <timothygu99@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com> Reviewed-By: Yuta Hiroto <hello@about-hiroppy.com>
Diffstat (limited to 'lib/console.js')
-rw-r--r--lib/console.js27
1 files changed, 20 insertions, 7 deletions
diff --git a/lib/console.js b/lib/console.js
index 13e3c05631..54c8aba829 100644
--- a/lib/console.js
+++ b/lib/console.js
@@ -60,6 +60,8 @@ function Console(stdout, stderr, ignoreErrors = true) {
Object.defineProperty(this, '_stderrErrorHandler', prop);
this[kCounts] = new Map();
+
+ Object.defineProperty(this, kGroupIndent, { writable: true });
this[kGroupIndent] = '';
// bind the prototype functions to this Console instance
@@ -86,7 +88,15 @@ function createWriteErrorHandler(stream) {
};
}
-function write(ignoreErrors, stream, string, errorhandler) {
+function write(ignoreErrors, stream, string, errorhandler, groupIndent) {
+ if (groupIndent.length !== 0) {
+ if (string.indexOf('\n') !== -1) {
+ string = string.replace(/\n/g, `\n${groupIndent}`);
+ }
+ string = groupIndent + string;
+ }
+ string += '\n';
+
if (!ignoreErrors) return stream.write(string);
// There may be an error occurring synchronously (e.g. for files or TTYs
@@ -115,8 +125,9 @@ function write(ignoreErrors, stream, string, errorhandler) {
Console.prototype.log = function log(...args) {
write(this._ignoreErrors,
this._stdout,
- `${this[kGroupIndent]}${util.format.apply(null, args)}\n`,
- this._stdoutErrorHandler);
+ util.format.apply(null, args),
+ this._stdoutErrorHandler,
+ this[kGroupIndent]);
};
@@ -126,8 +137,9 @@ Console.prototype.info = Console.prototype.log;
Console.prototype.warn = function warn(...args) {
write(this._ignoreErrors,
this._stderr,
- `${this[kGroupIndent]}${util.format.apply(null, args)}\n`,
- this._stderrErrorHandler);
+ util.format.apply(null, args),
+ this._stderrErrorHandler,
+ this[kGroupIndent]);
};
@@ -138,8 +150,9 @@ Console.prototype.dir = function dir(object, options) {
options = Object.assign({ customInspect: false }, options);
write(this._ignoreErrors,
this._stdout,
- `${this[kGroupIndent]}${util.inspect(object, options)}\n`,
- this._stdoutErrorHandler);
+ util.inspect(object, options),
+ this._stdoutErrorHandler,
+ this[kGroupIndent]);
};