mirror of
https://github.com/samsonjs/batteries.git
synced 2026-04-27 15:07:42 +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')
|
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
|
||||||
|
|
|
||||||
|
|
@ -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(); });
|
||||||
};
|
};
|
||||||
|
|
|
||||||
2
test.js
2
test.js
|
|
@ -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')
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue