Code coverage report for src/iconsdir.js

Statements: 92.11% (35 / 38)      Branches: 80% (8 / 10)      Functions: 100% (5 / 5)      Lines: 92.11% (35 / 38)      Ignored: none     

All files » src/ » iconsdir.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 711 1 1   1     1     1 58 58 58     58 29     29         1 58 58 58   58 109 109 109 109 109 29     29       29       29 58 29 29   29     29     29 109   29               1  
var fs = require('fs');
var util = require('util');
var path = require('path');
 
var Readable = require('stream').Readable;
 
// Inherit of duplex stream
util.inherits(SVGIconsDirStream, Readable);
 
// Constructor
function SVGIconsDirStream(dir, options) {
  var getMetadata = require('../src/metadata')(options);
  var _this = this;
  var files;
 
  // Ensure new were used
  if(!(this instanceof SVGIconsDirStream)) {
    return new SVGIconsDirStream(dir);
  }
 
  Iif(dir instanceof Array) {
    files = dir;
    dir = '';
  }
 
  function _pushSVGIcons() {
    var file;
    var matches;
    var svgIconStream;
 
    while(files.length) {
      file = files.shift();
      svgIconStream = fs.createReadStream(file);
      var metadata = getMetadata(file);
      svgIconStream.metadata = metadata;
      if(!_this.push(svgIconStream)) {
        return;
      }
    }
    _this.push(null);
  }
 
  // Parent constructor
  Readable.call(this, {
    objectMode: true
  });
 
  this._read = function() {
    if(files) {
      _pushSVGIcons();
      return;
    }
    fs.readdir(
      dir,
      function(err, theFiles) {
        Iif(err) {
          _this.emit('error', err);
        }
        files = theFiles.map(function(file) {
          return dir + '/' + file;
        });
        _pushSVGIcons();
      }
    );
 
  };
 
}
 
module.exports = SVGIconsDirStream;