1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /*
- db.collection.find().stream().pipe(Stringify()).pipe(res)
- */
- var Transform = require('readable-stream/transform')
- var stringify = require('json-stringify-safe')
- var util = require('util')
- util.inherits(Stringify, Transform)
- module.exports = Stringify
- function Stringify(options) {
- if (!(this instanceof Stringify))
- return new Stringify(options || {})
- if (options && options.replacer) {
- this.replacer = options.replacer;
- }
- if (options && options.space !== undefined) {
- this.space = options.space;
- }
- Transform.call(this, options || {})
- this._writableState.objectMode = true
- // Array Deliminator and Stringifier defaults
- var opener = options && options.opener ? options.opener : '[\n'
- var seperator = options && options.seperator ? options.seperator : '\n,\n'
- var closer = options && options.closer ? options.closer : '\n]\n'
- var stringifier = options && options.stringifier ? options.stringifier : stringify
- // Array Deliminators and Stringifier
- this.opener = new Buffer(opener, 'utf8')
- this.seperator = new Buffer(seperator, 'utf8')
- this.closer = new Buffer(closer, 'utf8')
- this.stringifier = stringifier
- }
- // Flags
- Stringify.prototype.started = false
- // JSON.stringify options
- Stringify.prototype.replacer = null
- Stringify.prototype.space = 0
- Stringify.prototype._transform = function (doc, enc, cb) {
- if (this.started) {
- this.push(this.seperator)
- } else {
- this.push(this.opener)
- this.started = true
- }
- doc = this.stringifier(doc, this.replacer, this.space)
- this.push(new Buffer(doc, 'utf8'))
- cb()
- }
- Stringify.prototype._flush = function (cb) {
- if (!this.started) this.push(this.opener)
- this.push(this.closer)
- this.push(null)
- cb()
- }
|