Comparing version 0.2.0 to 0.2.1
@@ -1,17 +0,14 @@ | ||
var util = require('util'), | ||
var util = require('util'), | ||
events = require('events'), | ||
dgram = require('dgram'); | ||
dgram = require('dgram'); | ||
function Carrier(reader, listener, encoding, separator) { | ||
var self = this; | ||
encoding = encoding || 'utf-8'; | ||
var eventName = (reader.constructor === dgram.Socket) ? 'message' : 'data'; | ||
var buffer = ''; | ||
var event = reader.constructor === dgram.Socket ? 'message' : 'data'; | ||
self.reader = reader; | ||
encoding = encoding || 'utf-8'; | ||
separator = separator || /\r?\n/; | ||
if (!separator) { | ||
separator = /\r?\n/; | ||
} | ||
if (listener) { | ||
@@ -21,10 +18,13 @@ self.addListener('line', listener); | ||
var buffer = ''; | ||
if (typeof reader.setEncoding === 'function') { | ||
reader.setEncoding(encoding); | ||
} | ||
if (typeof reader.setEncoding === 'function') | ||
reader.setEncoding(encoding); | ||
var defferredLineEmit = function(line) { | ||
process.nextTick(function() { | ||
self.emit('line', line); | ||
}); | ||
}; | ||
reader.on(event, function(data) { | ||
var args = Array.prototype.slice.call(arguments, 1); | ||
var onData = function carrierOnData(data) { | ||
if (data instanceof Buffer) { | ||
@@ -34,25 +34,25 @@ data = data.toString(encoding); | ||
data = buffer + data; | ||
var lines = data.split(separator); | ||
lines[0] = buffer + lines[0]; | ||
buffer = lines.pop(); | ||
var length = lines.length - 1; | ||
lines.forEach(function(line, index) { | ||
var _args = args.slice(0); | ||
buffer = lines[length] || ''; | ||
for (var i = 0; i < length; i++) { | ||
defferredLineEmit(lines[i]); | ||
} | ||
}; | ||
_args.unshift(line); | ||
_args.unshift('line'); | ||
self.emit.apply(self, _args); | ||
}); | ||
}); | ||
var ender = function() { | ||
if (buffer.length > 0) { | ||
self.emit('line', buffer); | ||
var onEnd = function onEnd() { | ||
if (buffer) { | ||
defferredLineEmit(buffer); | ||
buffer = ''; | ||
} | ||
self.emit('end'); | ||
} | ||
}; | ||
reader.on('end', ender); | ||
reader.on(eventName, onData); | ||
reader.on('end', onEnd); | ||
} | ||
@@ -65,2 +65,1 @@ | ||
} | ||
{ "name" : "carrier" | ||
, "description" : "Evented stream line reader for node.js" | ||
, "version" : "0.2.0" | ||
, "version" : "0.2.1" | ||
, "homepage" : "http://github.com/pgte/carrier" | ||
@@ -23,3 +23,7 @@ , "author" : | ||
, "url": "https://github.com/pgeorgi" | ||
} | ||
} | ||
, { | ||
"name": "Mattijah" | ||
, "url": "https://github.com/Mattijah" | ||
} | ||
] | ||
@@ -26,0 +30,0 @@ , "repository" : |
Sorry, the diff of this file is not supported yet
10487
13
254
8