From 3f09d8efb9c1cbf1c898f686bc5a71cb50c362bc Mon Sep 17 00:00:00 2001 From: Alan Gutierrez Date: Mon, 30 Dec 2013 21:22:26 -0800 Subject: [PATCH] Re-implement iterate using extracted libraries. Closes #75. --- index.js | 14 ++++++++++---- release.md | 1 + t/locket/{iterator.t.js.broken => iterator.t.js} | 0 3 files changed, 11 insertions(+), 4 deletions(-) rename t/locket/{iterator.t.js.broken => iterator.t.js} (100%) diff --git a/index.js b/index.js index cec30ec..8cbb0ea 100644 --- a/index.js +++ b/index.js @@ -16,6 +16,8 @@ var mkdirp = require('mkdirp') var pair = require('pair') +function echo (object) { return object } + var mvcc = { revise: require('revise'), riffle: require('riffle'), @@ -30,7 +32,7 @@ function isTrue (options, property, defaultValue) { } function Iterator (db, options) { - var versions = {} + var versions = {}, preferences = [ options, db._options ] for (var key in db._versions) { versions[key] = true @@ -41,8 +43,10 @@ function Iterator (db, options) { this._limit = options.limit this._versions = versions this._direction = isTrue(options, 'reverse', false) ? 'reverse' : 'forward' - this._keyAsBuffer = isTrue(options, 'keyAsBuffer', true) - this._valueAsBuffer = isTrue(options, 'valueAsBuffer', true) + this._decoders = { + key: isTrue(options, 'keyAsBuffer', true) ? echo : pair.encoder.key(preferences).decode, + value: isTrue(options, 'valueAsBuffer', true) ? echo : pair.encoder.value(preferences).decode + } } util.inherits(Iterator, AbstractIterator) @@ -70,7 +74,9 @@ Iterator.prototype._next = cadence(function (step) { }, function (iterator) { iterator.next(step()) }, function (record) { - if (record) step(null, record.key, record.value) + if (record) { + step(null, this._decoders.key(record.key), this._decoders.value(record.value)) + } }) }) diff --git a/release.md b/release.md index cdc5b13..62b4ee6 100644 --- a/release.md +++ b/release.md @@ -7,6 +7,7 @@ to build other databases. ### Issue by Issue + * Re-implement iterator using abstracted libraries. #75. * Re-implement batch using abstracted libraries. #74. * Re-implement delete using abstracted libraries. #73. * Re-implement get using extracted libraries. #72. diff --git a/t/locket/iterator.t.js.broken b/t/locket/iterator.t.js similarity index 100% rename from t/locket/iterator.t.js.broken rename to t/locket/iterator.t.js