core/plugins/c9.cli.bridge/json-stream.js
nightwing 223b4dfcc4 Revert "Merge branch 'master' of github.com:c9/newclient"
This reverts commit 4c3e3af1945f6a0f589550d93dbd2e48f22fe3be, reversing
changes made to c2ab338d29e591cf1123266a116191dc7c4e88ef.
2015-11-25 17:50:26 +04:00

47 lines
1.1 KiB
JavaScript

define(function(require, exports, module) {
var EventEmitter = require("events").EventEmitter;
module.exports = function(stream) {
var emit = this.emit.bind(this);
var buffer = "";
stream.on("data", function(chunk) {
buffer += chunk;
var parts = buffer.split("\n");
while (parts.length) {
try {
var message = JSON.parse(parts[0]);
emit("data", message);
parts.shift();
}
catch (e) {
if (parts.length !== 1) {
emit("error", e);
parts.shift();
}
else {
break;
}
}
}
buffer = parts.join("\n");
});
stream.on("error", function(err){
emit("error", err);
});
stream.on("close", function(data){
emit("close", data);
});
this.write = function(data) {
stream.write(JSON.stringify(data) + "\n");
};
};
module.exports.prototype = new EventEmitter();
});