export LineEmitter directly, change to 2 space indenting

This commit is contained in:
Sami Samhuri 2011-05-30 00:53:41 -07:00
parent 6ba8e98eed
commit 5295fe8f20
3 changed files with 36 additions and 35 deletions

View file

@ -3,7 +3,7 @@
var fs = require('fs') var fs = require('fs')
, ArrayExt = require('./array-ext') , ArrayExt = require('./array-ext')
, LineEmitter = require('./line-emitter').LineEmitter , LineEmitter = require('./line-emitter')
, ObjectExt = require('./object-ext') , ObjectExt = require('./object-ext')
, constants = require('constants') , constants = require('constants')
, FileExt , FileExt

View file

@ -6,43 +6,44 @@ var fs = require('fs')
, EventEmitter = require('events').EventEmitter , EventEmitter = require('events').EventEmitter
; ;
exports.LineEmitter = LineEmitter; module.exports = LineEmitter;
function LineEmitter(fileOrStream) { function LineEmitter(fileOrStream) {
var self = this var self = this
, stream = typeof fileOrStream === 'string' ? fs.createReadStream(fileOrStream) : fileOrStream , stream = typeof fileOrStream === 'string' ? fs.createReadStream(fileOrStream) : fileOrStream
; ;
this.buffer = ''; this.buffer = '';
this.ended = false; this.ended = false;
this.endEmitted = false; this.endEmitted = false;
stream.on('data', function(chunk) { stream.on('data', function(chunk) {
self.buffer += chunk; self.buffer += chunk;
self.checkForLine(); self.checkForLine();
}); });
stream.on('end', function() { stream.on('end', function() {
self.ended = true; self.ended = true;
self.checkForLine(); self.checkForLine();
}); });
stream.on('error', function(err) { stream.on('error', function(err) {
self.ended = true; self.ended = true;
self.emit('error', err); self.emit('error', err);
}); });
} }
util.inherits(LineEmitter, EventEmitter); util.inherits(LineEmitter, EventEmitter);
LineEmitter.prototype.checkForLine = function() { LineEmitter.prototype.checkForLine = function() {
var i = this.buffer.indexOf('\n') var i = this.buffer.indexOf('\n')
, self = this , self = this
; ;
if (i === -1) { if (i === -1) {
if (this.ended && !this.endEmitted) { if (this.ended && !this.endEmitted) {
if (this.buffer.length > 0) self.emit('line', this.buffer); if (this.buffer.length > 0) self.emit('line', this.buffer);
this.buffer = ''; this.buffer = '';
this.endEmitted = true; this.endEmitted = true;
self.emit('end'); self.emit('end');
}
return;
} }
this.emit('line', this.buffer.slice(0, i)); return;
this.buffer = this.buffer.slice(i + 1); }
process.nextTick(function() { self.checkForLine(); }); this.emit('line', this.buffer.slice(0, i));
this.buffer = this.buffer.slice(i + 1);
process.nextTick(function() { self.checkForLine(); });
}; };

View file

@ -1,6 +1,6 @@
var fs = require('fs') var fs = require('fs')
, spawn = require('child_process').spawn , spawn = require('child_process').spawn
, LineEmitter = require('./lib/line-emitter').LineEmitter , LineEmitter = require('./lib/line-emitter')
; ;