lib/ndir.js
function LineReader(file) {
  if (typeof file === 'string') {
    this.readstream = fs.createReadStream(file);
  } else {
    this.readstream = file;
  }
  this.remainBuffers = [];
  var self = this;
  this.readstream.on('data', function (data) {
    self.ondata(data);
  });
  this.readstream.on('error', function (err) {
    self.emit('error', err);
  });
  this.readstream.on('end', function () {
    self.emit('end');
  });
}
function LineReader(file) {
  if (typeof file === 'string') {
    this.readstream = fs.createReadStream(file);
  } else {
    this.readstream = file;
  }
  this.remainBuffers = [];
  var self = this;
  this.readstream.on('data', function (data) {
    self.ondata(data);
  });
  this.readstream.on('error', function (err) {
    self.emit('error', err);
  });
  this.readstream.on('end', function () {
    self.emit('end');
  });
}
function LineReader ( file ) { if ( typeof file === 'string' ) { this . readstream = fs . createReadStream ( file ) ; } else { this . readstream = file ; } this . remainBuffers = [ ] ; var self = this ; this . readstream . on ( 'data' , function ( data ) { self . ondata ( data ) ; } ) ; this . readstream . on ( 'error' , function ( err ) { self . emit ( 'error' , err ) ; } ) ; this . readstream . on ( 'end' , function ( ) { self . emit ( 'end' ) ; } ) ; }
Read stream data line by line.

@constructor
@param {String|ReadStream} file File path or data stream object.
Read stream data line by line .