Code Monkey home page Code Monkey logo

rummage's Introduction

rummage

stream friendly JSON.stringify

Build Status

installation

npm install rummage

example

var fs = require('fs')
var rummage = require('rummage')

rummage({
  message: fs.createReadStream(__dirname + '/message.txt')
}).pipe(process.stdout)

// produces

'{"message":"contents of message.txt\n"}'

special types

By default stream data is concatenated and output as a string, as per the above example. However, there are special instructions to treat streams as arrays, objects or raw JSON.

Imagine you want to retrieve a list of newline-delimited messages from a file and output them as JSON:

var fs = require('fs')
var rummage = require('rummage')
var split = require('split2')

rummage({
  messages: { _array: messages() } // output as an array
}).pipe(process.stdout)

function messages () {
  return fs.createReadStream(__dirname + '/messages.txt').pipe(split())
}

// produces

'{"messages":["message 1","message 2","message 3"]}\n'

Or as an object:

var fs = require('fs')
var rummage = require('rummage')
var split = require('split2')
var through = require('through2')

rummage({
  messages: { _object: messages() } // output as an object
}).pipe(process.stdout)

function messages () {
  return fs.createReadStream(__dirname + '/messages.txt')
    .pipe(split())
    .pipe(through.obj(write))

  // transform so that we get [key, value] for each message
  function write (chunk, enc, cb) {
    var key = chunk.toString('utf8').slice(-1)
    cb(null, [key, chunk])
  }
}

// produces

'{"messages":{"1":"message 1","2":"message 2","3":"message 3"]}\n'

And lastly, as raw JSON:

var fs = require('fs')
var rummage = require('rummage')

rummage({
  messages: { _json: messages() } // output as json
}).pipe(process.stdout)

function messages () {
  return fs.createReadStream(__dirname + '/messages.json')
}

// produces

'{"messages":{"1":"message 1","2":"message 2","3":"message 3"]}\n'

api

var stream = rummage(value)

Return a new readable stream of JSON from value

If a stream is encountered within value, or value is itself a stream, its data will be concatenated and output as a string by default. This behaviour can be overridden using special types, which are:

  • _string - output value as a string (default)
  • _json - output value as raw JSON
  • _array - output value as an array
  • _object - output value as an object. Each chunk of value must be an array consisting of [key, value]

See above for examples

similar modules

license

MIT

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.