Copy of avajs/pretty-format
npm install nicely-format> Stringify any JavaScript value.
- Supports all built-in JavaScript types
- Blazingly fast (similar performance to v8's JSON.stringify and significantly faster than Node's util.format)
- Plugin system for extending with custom types (i.e. ReactTestComponent)
``sh`
$ npm install @ava/pretty-format
`js
var prettyFormat = require('pretty-format');
var obj = { property: {} };
obj.circularReference = obj;
obj[Symbol('foo')] = 'foo';
obj.map = new Map();
obj.map.set('prop', 'value');
obj.array = [1, NaN, Infinity];
console.log(prettyFormat(obj));
`
Result:
`js`
Object {
"property": Object {},
"circularReference": [Circular],
"map": Map {
"prop" => "value"
},
"array": Array [
1,
NaN,
Infinity
],
Symbol(foo): "foo"
}
#### Type Support
Object, Array, ArrayBuffer, DataView, Float32Array, Float64Array, Int8Array, Int16Array, Int32Array, Uint8Array, Uint8ClampedArray, Uint16Array, Uint32Array, arguments, Boolean, Date, Error, Function, Infinity, Map, NaN, null, Number, RegExp, Set, String, Symbol, undefined, WeakMap, WeakSet
`js`
console.log(prettyFormat(object));
console.log(prettyFormat(object, options));
Options:
* callToJSON
Type: boolean, default: truetoJSON()
Call on passed object.indent
* number
Type: , default: 2maxDepth
Number of spaces for indentation.
* number
Type: , default: Infinitymin
Print only this number of levels.
* boolean
Type: , default: falseplugins
Print without whitespace.
* array
Type: , default: []printFunctionName
Plugins (see the next section).
* boolean
Type: , default: true[Function]
Print function names or just .escapeRegex
* boolean
Type: , default: falsehighlight
Escape special characters in regular expressions.
* boolean
Type: , default: falseReactTestComponent
Highlight syntax for terminal (works only with and ReactElement plugins.theme
* object
Type: , default: {tag: 'cyan', content: 'reset'...}reset
Syntax highlight theme.
Uses ansi-styles colors + for no color.tag
Available types: , content, prop and value.
Pretty format also supports adding plugins:
`js
var fooPlugin = {
test: function(val) {
return val && val.hasOwnProperty('foo');
},
print: function(val, print, indent) {
return 'Foo: ' + print(val.foo);
}
};
var obj = { foo: { bar: {} } };
prettyFormat(obj, {
plugins: [fooPlugin]
});
// Foo: Object {
// "bar": Object {}
// }
`
#### ReactTestComponent and ReactElement plugins
`js
var prettyFormat = require('pretty-format');
var reactTestPlugin = require('pretty-format/plugins/ReactTestComponent');
var reactElementPlugin = require('pretty-format/plugins/ReactElement');
var React = require('react');
var renderer = require('react-test-renderer');
var jsx = React.createElement('h1', null, 'Hello World');
prettyFormat(renderer.create(jsx).toJSON(), {
plugins: [reactTestPlugin, reactElementPlugin]
});
//