{"_id":"formatio","_rev":"102437","name":"formatio","description":"Human-readable object formatting","dist-tags":{"latest":"1.2.0"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"time":{"modified":"2021-06-03T10:36:03.000Z","created":"2012-07-16T19:18:09.602Z","1.2.0":"2016-02-17T07:08:00.593Z","1.1.3":"2015-11-14T18:54:52.161Z","1.1.2":"2014-12-12T11:01:28.893Z","1.1.1":"2014-07-29T17:29:58.131Z","1.1.0":"2014-06-11T05:32:20.895Z","1.0.2":"2013-10-18T20:36:57.476Z","1.0.1":"2013-09-17T20:47:45.482Z","1.0.0":"2013-09-16T22:36:01.678Z","0.6.0":"2012-07-16T19:18:09.602Z"},"users":{"d7game":true},"author":{"name":"Christian Johansen"},"repository":{"type":"git","url":"git+https://github.com/busterjs/formatio.git"},"versions":{"1.2.0":{"name":"formatio","version":"1.2.0","description":"Human-readable object formatting","homepage":"http://busterjs.org/docs/formatio/","author":{"name":"Christian Johansen"},"contributors":[{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"},{"name":"August Lilleaas","email":"august.lilleaas@gmail.com","url":"http://augustl.com"},{"name":"Dave Geddes","email":"davidcgeddes@gmail.com"},{"name":"Stein Magnus Jodal","email":"stein.magnus@jodal.no"},{"name":"Tek Nynja","email":"github@teknynja.com"}],"license":"BSD-3-Clause","main":"./lib/formatio","repository":{"type":"git","url":"git+https://github.com/busterjs/formatio.git"},"scripts":{"test":"node node_modules/buster/bin/buster-test --node","test-debug":"node --debug-brk node_modules/buster/bin/buster-test --node"},"dependencies":{"samsam":"1.x"},"devDependencies":{"buster":"0.7.x"},"gitHead":"055a641371fc47b59804fd1d96a1dc2b364e9bf1","bugs":{"url":"https://github.com/busterjs/formatio/issues"},"_id":"formatio@1.2.0","_shasum":"f3b2167d9068c4698a8d51f4f760a39a54d818eb","_from":".","_npmVersion":"2.14.15","_nodeVersion":"4.2.2","_npmUser":{"name":"cjohansen","email":"christian@cjohansen.no"},"dist":{"shasum":"f3b2167d9068c4698a8d51f4f760a39a54d818eb","size":10552,"noattachment":false,"key":"/formatio/-/formatio-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/formatio/download/formatio-1.2.0.tgz"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"_npmOperationalInternal":{"host":"packages-5-east.internal.npmjs.com","tmp":"tmp/formatio-1.2.0.tgz_1455692878330_0.4511311559472233"},"directories":{},"publish_time":1455692880593,"_cnpm_publish_time":1455692880593,"_hasShrinkwrap":false,"deprecated":"This package is unmaintained. Use @sinonjs/formatio instead"},"1.1.3":{"name":"formatio","version":"1.1.3","description":"Human-readable object formatting","homepage":"http://busterjs.org/docs/formatio/","author":{"name":"Christian Johansen"},"contributors":[{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"},{"name":"August Lilleaas","email":"august.lilleaas@gmail.com","url":"http://augustl.com"},{"name":"Dave Geddes","email":"davidcgeddes@gmail.com"},{"name":"Stein Magnus Jodal","email":"stein.magnus@jodal.no"},{"name":"Tek Nynja","email":"github@teknynja.com"}],"license":"BSD-3-Clause","main":"./lib/formatio","repository":{"type":"git","url":"git+https://github.com/busterjs/formatio.git"},"scripts":{"test":"node node_modules/buster/bin/buster-test --node","test-debug":"node --debug-brk node_modules/buster/bin/buster-test --node"},"dependencies":{"samsam":"1.x"},"devDependencies":{"buster":"0.7.x"},"gitHead":"2c6f1b3fe3fd6459be563cfdabab860a5f2824fa","bugs":{"url":"https://github.com/busterjs/formatio/issues"},"_id":"formatio@1.1.3","_shasum":"0d18e7e05aec6676212c19bdc75b6ac2ab5adf2c","_from":".","_npmVersion":"3.3.12","_nodeVersion":"4.2.2","_npmUser":{"name":"dominykas","email":"hello@dominykas.com"},"dist":{"shasum":"0d18e7e05aec6676212c19bdc75b6ac2ab5adf2c","size":8936,"noattachment":false,"key":"/formatio/-/formatio-1.1.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/formatio/download/formatio-1.1.3.tgz"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"directories":{},"publish_time":1447527292161,"_cnpm_publish_time":1447527292161,"_hasShrinkwrap":false,"deprecated":"This package is unmaintained. Use @sinonjs/formatio instead"},"1.1.2":{"name":"formatio","version":"1.1.2","description":"Human-readable object formatting","homepage":"http://busterjs.org/docs/formatio/","author":{"name":"Christian Johansen"},"contributors":[{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"},{"name":"August Lilleaas","email":"august.lilleaas@gmail.com","url":"http://augustl.com"},{"name":"Dave Geddes","email":"davidcgeddes@gmail.com"},{"name":"Stein Magnus Jodal","email":"stein.magnus@jodal.no"},{"name":"Tek Nynja","email":"github@teknynja.com"}],"main":"./lib/formatio","repository":{"type":"git","url":"https://github.com/busterjs/formatio.git"},"scripts":{"test":"node node_modules/buster/bin/buster-test --node","test-debug":"node --debug-brk node_modules/buster/bin/buster-test --node"},"dependencies":{"samsam":"~1.1"},"devDependencies":{"buster":"*"},"bugs":{"url":"https://github.com/busterjs/formatio/issues"},"_id":"formatio@1.1.2","_shasum":"5dd361dff7ebca6cdb3a3fb3e5aa9f1bd27e3d4f","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"dwittner","email":"d.wittner@gmx.de"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"dist":{"shasum":"5dd361dff7ebca6cdb3a3fb3e5aa9f1bd27e3d4f","size":8779,"noattachment":false,"key":"/formatio/-/formatio-1.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/formatio/download/formatio-1.1.2.tgz"},"directories":{},"publish_time":1418382088893,"_cnpm_publish_time":1418382088893,"_hasShrinkwrap":false,"deprecated":"This package is unmaintained. Use @sinonjs/formatio instead"},"1.1.1":{"name":"formatio","version":"1.1.1","description":"Human-readable object formatting","homepage":"http://busterjs.org/docs/formatio/","author":{"name":"Christian Johansen"},"contributors":[{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"},{"name":"August Lilleaas","email":"august.lilleaas@gmail.com","url":"http://augustl.com"},{"name":"Dave Geddes","email":"davidcgeddes@gmail.com"},{"name":"Stein Magnus Jodal","email":"stein.magnus@jodal.no"},{"name":"Tek Nynja","email":"github@teknynja.com"}],"main":"./lib/formatio","repository":{"type":"git","url":"https://github.com/busterjs/formatio.git"},"scripts":{"test":"node node_modules/buster/bin/buster-test --node","test-debug":"node --debug-brk node_modules/buster/bin/buster-test --node"},"dependencies":{"samsam":"~1.1"},"devDependencies":{"buster":"*"},"bugs":{"url":"https://github.com/busterjs/formatio/issues"},"_id":"formatio@1.1.1","dist":{"shasum":"5ed3ccd636551097383465d996199100e86161e9","size":8748,"noattachment":false,"key":"/formatio/-/formatio-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/formatio/download/formatio-1.1.1.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"cjohansen","email":"christian@cjohansen.no"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"directories":{},"publish_time":1406654998131,"_cnpm_publish_time":1406654998131,"_hasShrinkwrap":false,"deprecated":"This package is unmaintained. Use @sinonjs/formatio instead"},"1.1.0":{"name":"formatio","version":"1.1.0","description":"Human-readable object formatting","homepage":"http://busterjs.org/docs/formatio/","author":{"name":"Christian Johansen"},"contributors":[{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"},{"name":"August Lilleaas","email":"august.lilleaas@gmail.com","url":"http://augustl.com"},{"name":"Dave Geddes","email":"davidcgeddes@gmail.com"},{"name":"Stein Magnus Jodal","email":"stein.magnus@jodal.no"},{"name":"Tek Nynja","email":"github@teknynja.com"}],"main":"./lib/formatio","repository":{"type":"git","url":"https://github.com/busterjs/formatio.git"},"scripts":{"test":"node node_modules/buster/bin/buster-test --node","test-debug":"node --debug-brk node_modules/buster/bin/buster-test --node"},"dependencies":{"samsam":"~1.1"},"devDependencies":{"buster":"*"},"bugs":{"url":"https://github.com/busterjs/formatio/issues"},"_id":"formatio@1.1.0","dist":{"shasum":"02345a7197f216c6a61b55614d9e03ae39b8f69d","size":8539,"noattachment":false,"key":"/formatio/-/formatio-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/formatio/download/formatio-1.1.0.tgz"},"_from":".","_npmVersion":"1.3.21","_npmUser":{"name":"cjohansen","email":"christian@cjohansen.no"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"directories":{},"publish_time":1402464740895,"_cnpm_publish_time":1402464740895,"_hasShrinkwrap":false,"deprecated":"This package is unmaintained. Use @sinonjs/formatio instead"},"1.0.2":{"name":"formatio","version":"1.0.2","description":"Human-readable object formatting","homepage":"http://busterjs.org/docs/formatio/","author":{"name":"Christian Johansen"},"contributors":[{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"},{"name":"August Lilleaas","email":"august.lilleaas@gmail.com","url":"http://augustl.com"},{"name":"Dave Geddes","email":"davidcgeddes@gmail.com"},{"name":"Stein Magnus Jodal","email":"stein.magnus@jodal.no"},{"name":"Tek Nynja","email":"github@teknynja.com"}],"main":"./lib/formatio","repository":{"type":"git","url":"https://github.com/busterjs/formatio.git"},"scripts":{"test":"node test/formatio-test.js"},"dependencies":{"samsam":"~1.1"},"devDependencies":{"buster":"0.6.11"},"_id":"formatio@1.0.2","dist":{"shasum":"e7991ca144ff7d8cff07bb9ac86a9b79c6ba47ef","size":8123,"noattachment":false,"key":"/formatio/-/formatio-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/formatio/download/formatio-1.0.2.tgz"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"directories":{},"publish_time":1382128617476,"_hasShrinkwrap":false,"deprecated":"This package is unmaintained. Use @sinonjs/formatio instead","_cnpm_publish_time":1382128617476},"1.0.1":{"name":"formatio","version":"1.0.1","description":"Human-readable object formatting","homepage":"http://busterjs.org/docs/formatio/","author":{"name":"Christian Johansen"},"contributors":[{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"},{"name":"August Lilleaas","email":"august.lilleaas@gmail.com","url":"http://augustl.com"},{"name":"Dave Geddes","email":"davidcgeddes@gmail.com"},{"name":"Stein Magnus Jodal","email":"stein.magnus@jodal.no"},{"name":"Tek Nynja","email":"github@teknynja.com"}],"main":"./lib/formatio","repository":{"type":"git","url":"https://github.com/busterjs/formatio.git"},"scripts":{"test":"node test/formatio-test.js"},"dependencies":{"samsam":"~1.0","lodash":"~1.0"},"devDependencies":{"buster":"0.6.11"},"_id":"formatio@1.0.1","dist":{"shasum":"6a400f69166edfc6a53bae1d3398634fcabb5369","size":8138,"noattachment":false,"key":"/formatio/-/formatio-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/formatio/download/formatio-1.0.1.tgz"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"directories":{},"publish_time":1379450865482,"_hasShrinkwrap":false,"deprecated":"This package is unmaintained. Use @sinonjs/formatio instead","_cnpm_publish_time":1379450865482},"1.0.0":{"name":"formatio","version":"1.0.0","description":"Human-readable object formatting","homepage":"http://busterjs.org/docs/formatio/","author":{"name":"Christian Johansen"},"contributors":[{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"},{"name":"August Lilleaas","email":"august.lilleaas@gmail.com","url":"http://augustl.com"},{"name":"Dave Geddes","email":"davidcgeddes@gmail.com"},{"name":"Stein Magnus Jodal","email":"stein.magnus@jodal.no"},{"name":"Tek Nynja","email":"github@teknynja.com"}],"main":"./lib/formatio","repository":{"type":"git","url":"https://github.com/busterjs/formatio.git"},"scripts":{"test":"node test/formatio-test.js"},"dependencies":{"samsam":"~1.0","lodash":"~1.0"},"devDependencies":{"buster":"0.6.11"},"_id":"formatio@1.0.0","dist":{"shasum":"d3418de475cc48283894391546aa54f52d6ab7d2","size":8081,"noattachment":false,"key":"/formatio/-/formatio-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/formatio/download/formatio-1.0.0.tgz"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"directories":{},"publish_time":1379370961678,"_hasShrinkwrap":false,"deprecated":"This package is unmaintained. Use @sinonjs/formatio instead","_cnpm_publish_time":1379370961678},"0.6.0":{"name":"formatio","version":"0.6.0","description":"Human-readable object formatting","homepage":"http://busterjs.org/docs/formatio/","author":{"name":"Christian Johansen","email":"christian@cjohansen.no","url":"http://cjohansen.no"},"contributors":[{"name":"Buster.JS Format was written by"},{"name":"Christian Johansen, christian@cjohansen.no"},{"name":"August Lilleaas, august.lilleaas@gmail.com"}],"main":"./lib/formatio","repository":{"type":"git","url":"git://github.com/busterjs/formatio.git"},"scripts":{"test":"./run-tests"},"dependencies":{"samsam":"~0.1"},"devDependencies":{"buster-core":"~0.6","buster-assertions":"~0.10","buster-util":"~0.5","sinon":"~1.3"},"_npmUser":{"name":"cjohansen","email":"christian@cjohansen.no"},"_id":"formatio@0.6.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"02b31782f852f57e878b4d93f8f7903ab687d215","size":8034,"noattachment":false,"key":"/formatio/-/formatio-0.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/formatio/download/formatio-0.6.0.tgz"},"maintainers":[{"name":"augustl","email":"august@augustl.com"},{"name":"dominykas","email":"hello@dominykas.com"},{"name":"dwittner","email":"d.wittner@gmx.de"}],"directories":{},"publish_time":1342466289602,"_hasShrinkwrap":false,"deprecated":"This package is unmaintained. Use @sinonjs/formatio instead","_cnpm_publish_time":1342466289602}},"readme":"# formatio\n\n[![Build status](https://secure.travis-ci.org/busterjs/formatio.png?branch=master)](http://travis-ci.org/busterjs/formatio)\n\n> The cheesy object formatter\n\nPretty formatting of arbitrary JavaScript values. Currently only supports ascii\nformatting, suitable for command-line utilities. Like `JSON.stringify`, it\nformats objects recursively, but unlike `JSON.stringify`, it can handle\nregular expressions, functions, circular objects and more.\n\n`formatio` is a general-purpose library. It works in browsers (including old\nand rowdy ones, like IE6) and Node. It will define itself as an AMD module if\nyou want it to (i.e. if there's a `define` function available).\n\n\n## Running tests\n\n```\nnpm test\n```\n\nOr use Buster.JS manually:\n\n```\nnode_modules/buster/bin/buster-test --help\n```\n\n\n## `formatio.ascii` API\n\n`formatio.ascii` can take any JavaScript object and format it nicely as plain\ntext. It uses the helper functions described below to format different types of\nobjects.\n\n\n### `formatio.ascii(object)`\n\n`object` can be any kind of object, including DOM elements.\n\n\n**Simple object**\n\n```javascript\nvar formatio = require(\"formatio\");\n\nvar object = { name: \"Christian\" };\nconsole.log(formatio.ascii(object));\n\n// Outputs:\n// { name: \"Christian\" }\n```\n\n\n**Complex object**\n\n```javascript\nvar formatio = require(\"formatio\");\n\nvar developer = {\n    name: \"Christian\",\n    interests: [\"Programming\", \"Guitar\", \"TV\"],\n\n    location: {\n        language: \"Norway\",\n        city: \"Oslo\",\n\n        getLatLon: function getLatLon(callback) {\n            // ...\n        },\n\n        distanceTo: function distanceTo(location) {\n        }\n    },\n\n    speak: function () {\n        return \"Oh hi!\";\n    }\n};\n\nconsole.log(formatio.ascii(developer));\n\n// Outputs:\n// {\n//   interests: [\"Programming\", \"Guitar\", \"TV\"],\n//   location: {\n//     city: \"Oslo\",\n//     distanceTo: function distanceTo() {},\n//     getLatLon: function getLatLon() {},\n//     language: \"Norway\"\n//   },\n//   name: \"Christian\",\n//   speak: function () {}\n// }\n```\n\n\n**Custom constructor**\n\nIf the object to format is not a generic `Object` object, **formatio**\ndisplays the type of object (i.e. name of constructor). Set the\n`excludeConstructors` (see below) property to control what constructors to\ninclude in formatted output.\n\n```javascript\nvar formatio = require(\"formatio\");\n\nfunction Person(name) { this.name = name; }\n\nvar dude = new Person(\"Dude\");\nconsole.log(format.ascii(dude));\n\n// Outputs:\n// [Person] { name: \"Dude\" }\n```\n\n\n**DOM elements**\n\nDOM elements are formatted as abbreviated HTML source. 20 characters of\n`innerHTML` is included, and if the content is longer, it is truncated with\n`\"[...]\"`. Future editions will add the possibility to format nested markup\nstructures.\n\n```javascript\nvar p = document.createElement(\"p\");\np.id = \"sample\";\np.className = \"notice\";\np.setAttribute(\"data-custom\", \"42\");\np.innerHTML = \"Hey there, here's some text for ya there buddy\";\n\nconsole.log(formatio.ascii(p));\n\n// Outputs\n// &lt;p id=\"sample\" class=\"notice\" data-custom=\"42\"&gt;Hey there, here's so[...]&lt;/p&gt;</code></pre>\n```\n\n\n### `formatio.ascii.func(func)`\n\nFormats a function like `\"function [name]() {}\"`. The name is retrieved from\n`formatio.functionName`.\n\n\n### `formatio.ascii.array(array)`\n\nFormats an array as `\"[item1, item2, item3]\"` where each item is formatted\nwith `formatio.ascii`. Circular references are represented in the resulting\nstring as `\"[Circular]\"`.\n\n\n### `formatio.ascii.object(object)`\n\nFormats all properties of the object with `formatio.ascii`. If the object can\nbe fully represented in 80 characters, it's formatted in one line. Otherwise,\nit's nicely indented over as many lines as necessary. Circular references are\nrepresented by `\"[Circular]\"`.\n\nObjects created with custom constructors will be formatted as\n`\"[ConstructorName] { ... }\"`. Set the `excludeConstructors` property to\ncontrol what constructors are included in the output like this.\n\n\n### `formatio.ascii.element(element)`\n\nFormats a DOM element as HTML source. The tag name is represented in lower-case\nand all attributes and their values are included. The element's content is\nincluded, up to 20 characters. If the length exceeds 20 characters, it's\ntruncated with a `\"[...]\"`.\n\n\n### `formatio.functionName(func)`\n\nGuesses a function's name. If the function defines the `displayName` property\n(used by `some debugging tools <http://trac.webkit.org/changeset/42478>`_) it is\npreferred. If it is not found, the `name` property is tried. If no name can be\nfound this way, an attempt is made to find the function name by looking at the\nfunction's `toString()` representation.\n\n\n### `formatio.constructorName(object)`\n\nAttempts to guess the name of the constructor that created the object. It does\nso by getting the name of `object.constructor` using `functionName`. If a\nname is found, `excludeConstructors` is consulted. If the constructor name\nmatches any of these elements, an empty string is returned, otherwise the name\nis returned.\n\n\n## `formatio.ascii` properties\n\n### `quoteStrings(true)`\n\nWhether or not to quote simple strings. When set to `false`, simple strings\nare not quoted. Strings in arrays and objects will still be quoted, but\n`ascii(\"Some string\")` will not gain additional quotes.\n\n### `limitChildrenCount(number)`\n\nThis property allows to limit the number of printed array elements or object \nproperties. When set to 0, all elements will be included in output, any number\ngreater than zero will set the limit to that number.\n\n### `excludeConstructors ([\"Object\", /^.$/])`\n\nAn array of strings and/or regular expressions naming constructors that should\nbe stripped from the formatted output. The default value skips objects created\nby `Object` and constructors that have one character names (which are\ntypically used in `Object.create` shims).\n\nWhile you can set this property directly on `formatio.ascii`, it is\nrecommended to create an instance of `formatio.ascii` and override the\nproperty on that object.\n\n**Strings** represent constructor names that should not be represented in the\nformatted output. **Regular expressions** are tested against constructor names\nwhen formatting. If the expression is a match, the constructor name is not\nincluded in the formatted output.\n\n```javascript\nfunction Person(name) {\n    this.name = name;\n}\n\nvar person = new Person(\"Chris\");\nconsole.log(formatio.ascii(person));\n\n// Outputs\n// [Person] { name: \"Chris\" }\n\nvar formatter = Object.create(formatio);\nformatter.excludeConstructors = [\"Object\", /^.$/, \"Person\"];\nconsole.log(formatter.ascii(person));\n\n// Outputs\n// { name: \"Chris\" }\n\n// Global overwrite, generally not recommended\nformatio.excludeConstructors = [\"Object\", /^.$/, \"Person\"];\nconsole.log(formatio.ascii(person));\n\n// Outputs\n// { name: \"Chris\" }\n```\n\n\n## Changelog\n\n**1.1.2** (12.12.2014)\n\n* [Safe-guard innerHTML which may be empty (SVG elements)](https://github.com/busterjs/formatio/commit/ff623a6)\n* [Format empty strings as (empty string)](https://github.com/busterjs/formatio/commit/116d0ac)\n","_attachments":{},"homepage":"http://busterjs.org/docs/formatio/","bugs":{"url":"https://github.com/busterjs/formatio/issues"},"license":"BSD-3-Clause"}