abstract-nosql
Version:
An abstract prototype for nosql database with sync and streamable (LevelDOWN API)
63 lines (60 loc) • 1.64 kB
text/coffeescript
sinon = require 'sinon'
AbstractIterator = require 'abstract-iterator'
inherits = require 'inherits-ex/lib/inherits'
module.exports = class FakeIterator
inherits FakeIterator, AbstractIterator
getIndexGreaterThan = (arr, name)->
i = -1
while ++i < arr.length
return i if name <= arr[i]
return -1
getIndexLessThan = (arr, name)->
i = arr.length
while --i >= 0
return i if name >= arr[i]
return -1
constructor: ->
super
= Object.keys .data
.sort()
= 0
= .reverse isnt true
= .length
= .limit unless isNaN .limit
= if > 0 and <
if .lt
index = getIndexLessThan( , .lt)
index = .length if index < 0
if
= index
else
= index
else if .lte
index = getIndexLessThan( , .lte)
if index < 0
index = .length
else
index++
if
= index
else
= index
if .gt
index = getIndexGreaterThan( , .gt) + 1
if
= index
else
= index
else if .gte
index = getIndexGreaterThan( , .gte)
if
= index
else
= index
_nextSync: sinon.spy ->
result = <
if result
key = [ ]
result= [key, .data[key]]
++
result