snowyu/abstract-file.js

View on GitHub
src/streamifier.coffee

Summary

Maintainability
Test Coverage
isArray   = require 'util-ex/lib/is/type/array'
isBuffer  = require 'util-ex/lib/is/type/buffer'
isString  = require 'util-ex/lib/is/type/string'
inherits  = require 'inherits-ex/lib/inherits'
Readable  = require('readable-stream').Readable

module.exports = class Streamifier
  inherits Streamifier, Readable

  constructor: (object, options) ->
    return new Streamifier(object, options) unless @ instanceof Streamifier

    options ?= {}
    unless isBuffer(object) or isString(object)
      options.objectMode = true
    Readable.call this, options
    object = [object] unless isArray object
    @_i = 0
    @_l = object.length
    @_list = object
    return

  _read: (size) ->
    @push if @_i < @_l then @_list[@_i++] else null
    return