25 lines
730 B
JavaScript
25 lines
730 B
JavaScript
module.exports = Stream;
|
|
|
|
var Parser = require("./Parser.js");
|
|
var WritableStream = require("readable-stream").Writable;
|
|
var StringDecoder = require("string_decoder").StringDecoder;
|
|
var Buffer = require("buffer").Buffer;
|
|
|
|
function Stream(cbs, options) {
|
|
var parser = (this._parser = new Parser(cbs, options));
|
|
var decoder = (this._decoder = new StringDecoder());
|
|
|
|
WritableStream.call(this, { decodeStrings: false });
|
|
|
|
this.once("finish", function() {
|
|
parser.end(decoder.end());
|
|
});
|
|
}
|
|
|
|
require("inherits")(Stream, WritableStream);
|
|
|
|
Stream.prototype._write = function(chunk, encoding, cb) {
|
|
if (chunk instanceof Buffer) chunk = this._decoder.write(chunk);
|
|
this._parser.write(chunk);
|
|
cb();
|
|
};
|