UNPKG

iter-tools-es

Version:
52 lines (42 loc) 1.07 kB
const { PartsIterator, PartIterator } = require('./parts-iterator.js'); const { split } = require('./symbols.js'); class GroupsIterator extends PartsIterator { next() { if (!this.initialized) this.init(); const { spliterator } = this; if (this.currentPart !== null) { if (spliterator.value !== split || spliterator.current === this.splitStep) { this.currentPart.inactive = true; while (!spliterator.done && spliterator.value !== split) { spliterator.advance(); } } } if (spliterator.done) { return { value: undefined, done: true }; } spliterator.advance(); if (spliterator.done || spliterator.value === split) { throw new Error('Unexpected empty group'); } const key = spliterator.value; spliterator.advance(); this.splitStep = spliterator.current; this.currentPart = new PartIterator(this); return { value: [key, this.currentPart], done: false }; } } exports.GroupsIterator = GroupsIterator;