mirror of
https://github.com/samsonjs/batteries.git
synced 2026-03-25 09:15:46 +00:00
export LineEmitter directly, change to 2 space indenting
This commit is contained in:
parent
6ba8e98eed
commit
5295fe8f20
3 changed files with 36 additions and 35 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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(); });
|
||||
};
|
||||
|
|
|
|||
2
test.js
2
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')
|
||||
;
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue