summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-03-17 12:53:09 +0100
committerAnna Henningsen <anna@addaleax.net>2018-04-12 23:23:55 +0200
commitce58df58d0360779d16d60ce3bb0e9979ec5fdf4 (patch)
tree74428887af79688570649d44da4973bece5ab612
parent65765989d3d15e9d38dea8297c9c803df03eeb34 (diff)
downloadandroid-node-v8-ce58df58d0360779d16d60ce3bb0e9979ec5fdf4.tar.gz
android-node-v8-ce58df58d0360779d16d60ce3bb0e9979ec5fdf4.tar.bz2
android-node-v8-ce58df58d0360779d16d60ce3bb0e9979ec5fdf4.zip
console: allow `options` object as constructor arg
PR-URL: https://github.com/nodejs/node/pull/19372 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
-rw-r--r--doc/api/console.md17
-rw-r--r--lib/console.js27
2 files changed, 32 insertions, 12 deletions
diff --git a/doc/api/console.md b/doc/api/console.md
index db3a903eaf..99c31df242 100644
--- a/doc/api/console.md
+++ b/doc/api/console.md
@@ -79,17 +79,22 @@ const { Console } = console;
```
### new Console(stdout[, stderr][, ignoreErrors])
+### new Console(options)
<!-- YAML
changes:
- version: v8.0.0
pr-url: https://github.com/nodejs/node/pull/9744
description: The `ignoreErrors` option was introduced.
+ - version: REPLACEME
+ pr-url: https://github.com/nodejs/node/pull/19372
+ description: The `Console` constructor now supports an `options` argument.
-->
-* `stdout` {stream.Writable}
-* `stderr` {stream.Writable}
-* `ignoreErrors` {boolean} Ignore errors when writing to the underlying streams.
- Defaults to `true`.
+* `options` {Object}
+ * `stdout` {stream.Writable}
+ * `stderr` {stream.Writable}
+ * `ignoreErrors` {boolean} Ignore errors when writing to the underlying
+ streams. **Default:** `true`.
Creates a new `Console` with one or two writable stream instances. `stdout` is a
writable stream to print log or info output. `stderr` is used for warning or
@@ -99,7 +104,7 @@ error output. If `stderr` is not provided, `stdout` is used for `stderr`.
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// custom simple logger
-const logger = new Console(output, errorOutput);
+const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
@@ -110,7 +115,7 @@ The global `console` is a special `Console` whose output is sent to
[`process.stdout`][] and [`process.stderr`][]. It is equivalent to calling:
```js
-new Console(process.stdout, process.stderr);
+new Console({ stdout: process.stdout, stderr: process.stderr });
```
### console.assert(value[, ...message])
diff --git a/lib/console.js b/lib/console.js
index 456c0cc439..9557b27fbc 100644
--- a/lib/console.js
+++ b/lib/console.js
@@ -51,16 +51,28 @@ const {
// Track amount of indentation required via `console.group()`.
const kGroupIndent = Symbol('groupIndent');
-function Console(stdout, stderr, ignoreErrors = true) {
+function Console(options /* or: stdout, stderr, ignoreErrors = true */) {
if (!(this instanceof Console)) {
- return new Console(stdout, stderr, ignoreErrors);
+ return new Console(...arguments);
}
+
+ let stdout, stderr, ignoreErrors;
+ if (options && typeof options.write !== 'function') {
+ ({
+ stdout,
+ stderr = stdout,
+ ignoreErrors = true
+ } = options);
+ } else {
+ stdout = options;
+ stderr = arguments[1];
+ ignoreErrors = arguments[2] === undefined ? true : arguments[2];
+ }
+
if (!stdout || typeof stdout.write !== 'function') {
throw new ERR_CONSOLE_WRITABLE_STREAM('stdout');
}
- if (!stderr) {
- stderr = stdout;
- } else if (typeof stderr.write !== 'function') {
+ if (!stderr || typeof stderr.write !== 'function') {
throw new ERR_CONSOLE_WRITABLE_STREAM('stderr');
}
@@ -369,7 +381,10 @@ Console.prototype.table = function(tabularData, properties) {
return final(keys, values);
};
-module.exports = new Console(process.stdout, process.stderr);
+module.exports = new Console({
+ stdout: process.stdout,
+ stderr: process.stderr
+});
module.exports.Console = Console;
function noop() {}