| (function() { |
| var LineTransform, Stream, |
| __hasProp = {}.hasOwnProperty, |
| __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; |
| |
| Stream = require('stream'); |
| |
| LineTransform = (function(_super) { |
| __extends(LineTransform, _super); |
| |
| function LineTransform(options) { |
| this.savedR = null; |
| LineTransform.__super__.constructor.call(this, options); |
| } |
| |
| LineTransform.prototype._transform = function(chunk, encoding, done) { |
| var hi, last, lo; |
| lo = 0; |
| hi = 0; |
| if (this.savedR) { |
| if (chunk[0] !== 0x0a) { |
| this.push(this.savedR); |
| } |
| this.savedR = null; |
| } |
| last = chunk.length - 1; |
| while (hi <= last) { |
| if (chunk[hi] === 0x0d) { |
| if (hi === last) { |
| this.savedR = chunk.slice(last); |
| break; |
| } else if (chunk[hi + 1] === 0x0a) { |
| this.push(chunk.slice(lo, hi)); |
| lo = hi + 1; |
| } |
| } |
| hi += 1; |
| } |
| if (hi !== lo) { |
| this.push(chunk.slice(lo, hi)); |
| } |
| done(); |
| }; |
| |
| LineTransform.prototype._flush = function(done) { |
| if (this.savedR) { |
| this.push(this.savedR); |
| } |
| return done(); |
| }; |
| |
| return LineTransform; |
| |
| })(Stream.Transform); |
| |
| module.exports = LineTransform; |
| |
| }).call(this); |