format-data
Version:
Format tabular data from object streams to different (standard) formats
73 lines (52 loc) • 1.84 kB
Markdown
# format-data
Windows | Mac/Linux
------- | ---------
[](https://ci.appveyor.com/project/finnp/format-data/branch/master) | [](https://travis-ci.org/finnp/format-data)
Module for formatting tabular data from object streams in different standard ways.
Supporting `csv`, `ndjson`, `json` and `sse`. Install with `npm install format-data`.
## Usage
```js
formatData(format, [opts])
```
The `opts` object will be passed to the underlying serializing module (see below).
or just pass an options object with `format` as a key.
```js
formatData(opts)
```
## full control of prefix, separator, suffix
You can pass a custom prefix, separator, or suffix to the stream builder for csv and json cases.
Examples:
```js
## default separator for csv is ','
> formatData('csv')
'a,b\n1,2\nhello,world\n'
## change separator to a tab
> formatData({format: 'csv', separator: '\t'})
'a\tb\n1\t2\nhello\tworld\n'
## default object style finishes with }]
> formatData({
format: 'json',
style: 'object'
})
{"rows":[{"a":1,"b":2},{"a":"hello","b":"world"}]}
## custom suffix
> formatData({
format: 'json',
style: 'object',
suffix: ', "next": "/api/rows?page=2"}'
})
{"rows":[{"a":1,"b":2},{"a":"hello","b":"world"}], "next": "/api/rows?page=2"}
## suffix still added in cases of error
> formatData({
format: 'json',
style: 'object',
suffix: ', "next": "/api/rows?page=2"}'
})
{"rows":[], "error":"Oh no!", "next": "/api/rows?page=2"}
```
## format
Formats and the used modules:
* `'csv'` - `require('csv-write-stream')(opts)`
* `'ndjson'` - `require('ndjson').stringify(opts)`
* `json` - `new require('./json.js')(opts)`
* `sse` - `require('ssejson').serialize(opts)`