hypertrie-stack-iterator

1.0.0 • Public • Published

hypertrie-stack-iterator

Build Status

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

Readme

Keywords

Package Sidebar

Install

npm i hypertrie-stack-iterator

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

8.26 kB

Total Files

6

Last publish

Collaborators

  • andrewosh