0
0
mirror of https://github.com/nodejs/node.git synced 2024-12-01 16:10:02 +01:00
nodejs/doc/api/util.markdown

217 lines
6.1 KiB
Markdown
Raw Normal View History

2012-02-27 20:09:35 +01:00
# util
2010-10-28 14:18:16 +02:00
Stability: 5 - Locked
2010-10-28 14:18:16 +02:00
These functions are in the module `'util'`. Use `require('util')` to access
them.
## util.format(format, [...])
Returns a formatted string using the first argument as a `printf`-like format.
The first argument is a string that contains zero or more *placeholders*.
Each placeholder is replaced with the converted value from its corresponding
argument. Supported placeholders are:
* `%s` - String.
* `%d` - Number (both integer and float).
* `%j` - JSON.
* `%%` - single percent sign (`'%'`). This does not consume an argument.
If the placeholder does not have a corresponding argument, the placeholder is
not replaced.
util.format('%s:%s', 'foo'); // 'foo:%s'
If there are more arguments than placeholders, the extra arguments are
converted to strings with `util.inspect()` and these strings are concatenated,
delimited by a space.
util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'
If the first argument is not a format string then `util.format()` returns
a string that is the concatenation of all its arguments separated by spaces.
Each argument is converted to a string with `util.inspect()`.
util.format(1, 2, 3); // '1 2 3'
2012-02-27 20:09:35 +01:00
## util.debug(string)
2010-10-28 14:18:16 +02:00
A synchronous output function. Will block the process and
output `string` immediately to `stderr`.
require('util').debug('message on stderr');
## util.error([...])
Same as `util.debug()` except this will output all arguments immediately to
`stderr`.
## util.puts([...])
A synchronous output function. Will block the process and output all arguments
to `stdout` with newlines after each argument.
## util.print([...])
A synchronous output function. Will block the process, cast each argument to a
string then output to `stdout`. Does not place newlines after each argument.
2010-10-28 14:18:16 +02:00
2012-02-27 20:09:35 +01:00
## util.log(string)
2010-10-28 14:18:16 +02:00
Output with timestamp on `stdout`.
require('util').log('Timestamped message.');
2010-10-28 14:18:16 +02:00
## util.inspect(object, [options])
2010-10-28 14:18:16 +02:00
Return a string representation of `object`, which is useful for debugging.
An optional *options* object may be passed that alters certain aspects of the
formatted string:
2010-10-28 14:18:16 +02:00
- `showHidden` - if `true` then the object's non-enumerable properties will be
shown too. Defaults to `false`.
2010-10-28 14:18:16 +02:00
- `depth` - tells `inspect` how many times to recurse while formatting the
object. This is useful for inspecting large complicated objects. Defaults to
`2`. To make it recurse indefinitely pass `null`.
2010-10-28 14:18:16 +02:00
- `colors` - if `true`, then the output will be styled with ANSI color codes.
Defaults to `false`. Colors are customizable, see below.
- `customInspect` - if `false`, then custom `inspect()` functions defined on the
objects being inspected won't be called. Defaults to `true`.
2010-10-28 14:18:16 +02:00
Example of inspecting all properties of the `util` object:
var util = require('util');
console.log(util.inspect(util, { showHidden: true, depth: null }));
2010-10-28 14:18:16 +02:00
### Customizing `util.inspect` colors
Color output (if enabled) of `util.inspect` is customizable globally
via `util.inspect.styles` and `util.inspect.colors` objects.
`util.inspect.styles` is a map assigning each style a color
from `util.inspect.colors`.
Highlighted styles and their default values are:
* `number` (yellow)
* `boolean` (yellow)
* `string` (green)
* `date` (magenta)
* `regexp` (red)
* `null` (bold)
* `undefined` (grey)
* `special` - only function at this time (cyan)
* `name` (intentionally no styling)
Predefined color codes are: `white`, `grey`, `black`, `blue`, `cyan`,
`green`, `magenta`, `red` and `yellow`.
There are also `bold`, `italic`, `underline` and `inverse` codes.
2010-10-28 14:18:16 +02:00
2012-02-27 20:09:35 +01:00
## util.isArray(object)
Returns `true` if the given "object" is an `Array`. `false` otherwise.
var util = require('util');
util.isArray([])
// true
util.isArray(new Array)
// true
util.isArray({})
// false
2012-02-27 20:09:35 +01:00
## util.isRegExp(object)
Returns `true` if the given "object" is a `RegExp`. `false` otherwise.
var util = require('util');
util.isRegExp(/some regexp/)
// true
util.isRegExp(new RegExp('another regexp'))
// true
util.isRegExp({})
// false
2012-02-27 20:09:35 +01:00
## util.isDate(object)
Returns `true` if the given "object" is a `Date`. `false` otherwise.
var util = require('util');
util.isDate(new Date())
// true
util.isDate(Date())
// false (without 'new' returns a String)
util.isDate({})
// false
2012-02-27 20:09:35 +01:00
## util.isError(object)
Returns `true` if the given "object" is an `Error`. `false` otherwise.
var util = require('util');
util.isError(new Error())
// true
util.isError(new TypeError())
// true
util.isError({ name: 'Error', message: 'an error occurred' })
// false
2012-02-27 20:09:35 +01:00
## util.pump(readableStream, writableStream, [callback])
2010-10-28 14:18:16 +02:00
Stability: 0 - Deprecated: Use readableStream.pipe(writableStream)
2010-10-28 14:18:16 +02:00
Read the data from `readableStream` and send it to the `writableStream`.
2011-01-11 19:18:46 +01:00
When `writableStream.write(data)` returns `false` `readableStream` will be
2010-10-28 14:18:16 +02:00
paused until the `drain` event occurs on the `writableStream`. `callback` gets
an error as its only argument and is called when `writableStream` is closed or
when an error occurs.
2010-11-21 06:28:19 +01:00
2012-02-27 20:09:35 +01:00
## util.inherits(constructor, superConstructor)
2010-11-21 06:28:19 +01:00
Inherit the prototype methods from one
[constructor](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/constructor)
into another. The prototype of `constructor` will be set to a new
object created from `superConstructor`.
As an additional convenience, `superConstructor` will be accessible
through the `constructor.super_` property.
var util = require("util");
var events = require("events");
function MyStream() {
events.EventEmitter.call(this);
}
util.inherits(MyStream, events.EventEmitter);
MyStream.prototype.write = function(data) {
this.emit("data", data);
}
var stream = new MyStream();
console.log(stream instanceof events.EventEmitter); // true
console.log(MyStream.super_ === events.EventEmitter); // true
stream.on("data", function(data) {
console.log('Received data: "' + data + '"');
})
stream.write("It works!"); // Received data: "It works!"