hypertrie-stack-iterator
v1.0.0
Published
A stack-based iterator for iterating over multiple Hypertries
Downloads
33
Readme
hypertrie-stack-iterator
A stack-based iterator for iterating over multiple Hypertries.
The stack iterator provides push and pop hooks, as well as a map function for modifying return values based on what's currently on the stack. Push operations can also tag iterators with state that can be accessed during map
.
Installation
npm i hypertrie-stack-iterator --save
Usage
const StackIterator = require('hypertrie-stack-iterator')
const ite = new StackIterator({
maxDepth: ...,
onpush: ...,
onpop: ...,
map: ...
})
ite.push(iterator1)
ite.push(iterator2)
// Reading values from `ite` will now return the values from iterator2 then iterator1
API
const ite = new StackIterator([opts])
Creates a new StackIterator.
Options can include:
{
maxDepth: -1, // The maximum stack depth (-1 means infinite),
onpush: function (iterator, state) { ... } // Called when a new iterator/state pair is pushed.
onpop: function (iterator, state) { ... } // Called when an iterator/state pair is popped.
map: function (value, states) { ... } // Called before a value is about to be returned.
}
onpush
and onpop
are synchronous, but can modify the StackIterator by pushing new values onto the stack.
map
is called with both the value that's about to be returned, and an array of the state values that you've associated with stack entries, in stack order.
ite.push(iterator, state)
Insert a new iterator/state pair into the stack.
ite.next(cb)
Yield the next value in the iterator. Follows the nanoiterator callback format.
ite.destroy(cb
Destroys the iterator. This will destroy all iterators currently on the stack.
License
MIT