circulator

Infinite circular iterator that can be consumed from the current position by Array.from() or for-of

Usage no npm install needed!

<script type="module">
  import circulator from 'https://cdn.skypack.dev/circulator';
</script>

README

Build Status Dev Dependencies NPM Version License

Circulator

Circular iteration for a list of values; step forward or backward with a simple API. Lightweight, ES2015 generator-based implementation.

Installation

npm install --save circulator

Usage

const { Circulator } = require('circulator')

const c = new Circulator(['A', 'B', 'C'])

// Methods
c.current() // -> 'A'
c.next()    // -> 'B'
c.step(2)   // -> 'A' (wrap to start)
c.prev()    // -> 'C' (wrap to end)
c.step(-1)  // -> 'B'

// Properties
c.size // -> 3
c.cycle // The generator used for cycling

// Consuming the circulator returns elements starting from the current (last returned) position
[...c] // -> ['b', 'c', 'a']

The basic generator object can be used separately:

const { Cycle } = require('circulator')
const g = Cycle([1, 2, 3])
g.next().value // -> 1

Notes