From 5295fe8f206e4fc8495dd528e0622c984db1bb69 Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Mon, 30 May 2011 00:53:41 -0700 Subject: [PATCH] export LineEmitter directly, change to 2 space indenting --- lib/file-ext.js | 2 +- lib/line-emitter.js | 67 +++++++++++++++++++++++---------------------- test.js | 2 +- 3 files changed, 36 insertions(+), 35 deletions(-) diff --git a/lib/file-ext.js b/lib/file-ext.js index 4fe652b..443d92a 100644 --- a/lib/file-ext.js +++ b/lib/file-ext.js @@ -3,7 +3,7 @@ var fs = require('fs') , ArrayExt = require('./array-ext') - , LineEmitter = require('./line-emitter').LineEmitter + , LineEmitter = require('./line-emitter') , ObjectExt = require('./object-ext') , constants = require('constants') , FileExt diff --git a/lib/line-emitter.js b/lib/line-emitter.js index c3bb680..3562bf9 100644 --- a/lib/line-emitter.js +++ b/lib/line-emitter.js @@ -6,43 +6,44 @@ var fs = require('fs') , EventEmitter = require('events').EventEmitter ; -exports.LineEmitter = LineEmitter; +module.exports = LineEmitter; + function LineEmitter(fileOrStream) { - var self = this - , stream = typeof fileOrStream === 'string' ? fs.createReadStream(fileOrStream) : fileOrStream - ; - this.buffer = ''; - this.ended = false; - this.endEmitted = false; - stream.on('data', function(chunk) { - self.buffer += chunk; - self.checkForLine(); - }); - stream.on('end', function() { - self.ended = true; - self.checkForLine(); - }); - stream.on('error', function(err) { - self.ended = true; - self.emit('error', err); - }); + var self = this + , stream = typeof fileOrStream === 'string' ? fs.createReadStream(fileOrStream) : fileOrStream + ; + this.buffer = ''; + this.ended = false; + this.endEmitted = false; + stream.on('data', function(chunk) { + self.buffer += chunk; + self.checkForLine(); + }); + stream.on('end', function() { + self.ended = true; + self.checkForLine(); + }); + stream.on('error', function(err) { + self.ended = true; + self.emit('error', err); + }); } util.inherits(LineEmitter, EventEmitter); LineEmitter.prototype.checkForLine = function() { - var i = this.buffer.indexOf('\n') - , self = this - ; - if (i === -1) { - if (this.ended && !this.endEmitted) { - if (this.buffer.length > 0) self.emit('line', this.buffer); - this.buffer = ''; - this.endEmitted = true; - self.emit('end'); - } - return; + var i = this.buffer.indexOf('\n') + , self = this + ; + if (i === -1) { + if (this.ended && !this.endEmitted) { + if (this.buffer.length > 0) self.emit('line', this.buffer); + this.buffer = ''; + this.endEmitted = true; + self.emit('end'); } - this.emit('line', this.buffer.slice(0, i)); - this.buffer = this.buffer.slice(i + 1); - process.nextTick(function() { self.checkForLine(); }); + return; + } + this.emit('line', this.buffer.slice(0, i)); + this.buffer = this.buffer.slice(i + 1); + process.nextTick(function() { self.checkForLine(); }); }; diff --git a/test.js b/test.js index 1e527fb..09604e1 100644 --- a/test.js +++ b/test.js @@ -1,6 +1,6 @@ var fs = require('fs') , spawn = require('child_process').spawn - , LineEmitter = require('./lib/line-emitter').LineEmitter + , LineEmitter = require('./lib/line-emitter') ;