From 5550fad366b32ea45eb578359086fd0b0d26b220 Mon Sep 17 00:00:00 2001 From: Samy Pesse Date: Sat, 16 Apr 2016 19:24:50 +0200 Subject: [PATCH 1/2] Add "offset" property --- index.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 04ba4d1..9873876 100644 --- a/index.js +++ b/index.js @@ -14,6 +14,7 @@ var Dissolve = module.exports = function Dissolve(options) { stream.Transform.call(this, options); + this.offset = 0; this.jobs = []; this.vars = Object.create(null); this.vars_list = []; @@ -122,6 +123,11 @@ Dissolve.prototype._transform = function _transform(input, encoding, done) { this._buffer.append(input); + function moveOffset(value) { + offset += value; + this.offset += value; + } + while (this.jobs.length) { var job = this.jobs[0]; @@ -158,19 +164,19 @@ Dissolve.prototype._transform = function _transform(input, encoding, done) { if (job.type === "buffer") { this._exec_buffer(job, offset, length); - offset += length; + moveOffset(length); continue; } if (job.type === "string") { this._exec_string(job, offset, length); - offset += length; + moveOffset(length); continue; } if (job.type === "skip") { this.jobs.shift(); - offset += length; + moveOffset(length); continue; } @@ -200,7 +206,7 @@ Dissolve.prototype._transform = function _transform(input, encoding, done) { this.jobs.shift(); - offset += length; + moveOffset(length); } this._buffer.consume(offset); From 4fd1556d0199a27dd0a6f9f22cb6648194301454 Mon Sep 17 00:00:00 2001 From: Samy Pesse Date: Sat, 16 Apr 2016 19:28:41 +0200 Subject: [PATCH 2/2] Fix binding of this.offset --- index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 9873876..95d12a2 100644 --- a/index.js +++ b/index.js @@ -119,13 +119,14 @@ Dissolve.prototype._exec_buffer = function _exec_buffer(job, offset, length) { }; Dissolve.prototype._transform = function _transform(input, encoding, done) { + var that = this; var offset = 0; this._buffer.append(input); function moveOffset(value) { offset += value; - this.offset += value; + that.offset += value; } while (this.jobs.length) {