0.1.0 • Published 8 years ago
iterator-sequencer v0.1.0
iterator-sequencer
Sequencer-like Iterator
convert to a sequencer-like iterator from an iterator that generates { time: number }
.
Installation
$ npm install iterator-sequencer
API
IteratorSequencer
constructor(iter: Iterator, interval: number)
Instance methods
next(): { done: boolean, value: object[] }
[Symbol.iterator]()
Examples
import IteratorSequencer from "iterator-sequencer";
let baseIterator = [
{ time: 0.0 },
{ time: 1.0 },
{ time: 1.5 },
{ time: 2.0 },
{ time: 4.0 },
{ time: 8.0 },
][Symbol.iterator]();
let iter = new IteratorSequencer(baseIterator, 1);
// 0.000
iter.next(); // { done: false, value: [ { time: 0.0 } ] }
// 1.000
iter.next(); // { done: false, value: [ { time: 1.0 }, { time: 1.5 } ] }
// 2.000
iter.next(); // { done: false, value: [ { time: 2.0 } ] }
// 3.000
iter.next(); // { done: false, value: [] }
// 4.000
iter.next(); // { done: false, value: [ { time: 4.0 } ] }
// 5.000
iter.next(); // { done: false, value: [] }
// 6.000
iter.next(); // { done: false, value: [] }
// 7.000
iter.next(); // { done: false, value: [] }
// 8.000
iter.next(); // { done: false, value: [ { time: 8.0 } ] }
// 9.000
iter.next(); // { done: true, value: [] }
{ done: true }
is adjusted by duration
of the last item if exists.
import IteratorSequencer from "iterator-sequencer";
let baseIterator = [
{ time: 0.0, duration: 2 },
{ time: 1.0, duration: 2 },
{ time: 1.5, duration: 2 },
{ time: 2.0, duration: 2 },
{ time: 4.0, duration: 2 },
{ time: 8.0, duration: 2 },
][Symbol.iterator]();
let iter = new IteratorSequencer(baseIterator, 1);
// 0.000
iter.next(); // { done: false, value: [ { time: 0.0, duration: 2 } ] }
// 1.000
iter.next(); // { done: false, value: [ { time: 1.0, duration: 2 }, { time: 1.5, duration: 2 } ] }
// 2.000
iter.next(); // { done: false, value: [ { time: 2.0, duration: 2 } ] }
// 3.000
iter.next(); // { done: false, value: [] }
// 4.000
iter.next(); // { done: false, value: [ { time: 4.0, duration: 2 } ] }
// 5.000
iter.next(); // { done: false, value: [] }
// 6.000
iter.next(); // { done: false, value: [] }
// 7.000
iter.next(); // { done: false, value: [] }
// 8.000
iter.next(); // { done: false, value: [ { time: 8.0, duration: 2 } ] }
// 9.000
iter.next(); // { done: false, value: [] }
// 10.000
iter.next(); // { done: true , value: [] }
License
MIT
0.1.0
8 years ago