From 8b3ad7ac85cb7beac682d47f11f4af33fbec54ba Mon Sep 17 00:00:00 2001 From: "Ryan X. Charles" Date: Mon, 1 Sep 2014 16:40:31 -0700 Subject: [PATCH] read a buffer, like slicing while iterating pos --- lib/bufferreader.js | 6 ++++++ test/bufferreader.js | 14 ++++++++++++++ test/{test.script.js => script.js} | 0 3 files changed, 20 insertions(+) rename test/{test.script.js => script.js} (100%) diff --git a/lib/bufferreader.js b/lib/bufferreader.js index b8e2e7272..f33ec9084 100644 --- a/lib/bufferreader.js +++ b/lib/bufferreader.js @@ -22,6 +22,12 @@ BufferReader.prototype.eof = function eof() { return this.pos >= this.buf.length; }; +BufferReader.prototype.buffer = function(len) { + var buf = this.buf.slice(this.pos, this.pos + len); + this.pos = this.pos + len; + return buf; +}; + BufferReader.prototype.read = function() { var buf = this.buf.slice(this.pos); this.pos = this.buf.length; diff --git a/test/bufferreader.js b/test/bufferreader.js index 735d96029..3bbce173a 100644 --- a/test/bufferreader.js +++ b/test/bufferreader.js @@ -35,6 +35,20 @@ describe('BufferReader', function() { }); + describe('#buffer', function() { + + it('should return a buffer of this length', function() { + var buf = new Buffer(10); + buf.fill(0); + var br = new BufferReader(buf); + var buf2 = br.buffer(2); + buf2.length.should.equal(2); + br.eof().should.equal(false); + br.pos.should.equal(2); + }); + + }); + describe('read', function() { it('should return the same buffer', function() { diff --git a/test/test.script.js b/test/script.js similarity index 100% rename from test/test.script.js rename to test/script.js