UNPKG

iteragain

Version:

Javascript Iterable/Iterator/Generator-function utilities.

42 lines 1.55 kB
/** An iterator that yields non-overlapping values in chunks (tuples) of a certain `size`. */ var ChunksIterator = /** @class */ (function () { function ChunksIterator(iterator, length, fill) { this.iterator = iterator; this.length = length; this.fill = fill; this.done = false; this.chunk = []; } ChunksIterator.prototype[Symbol.iterator] = function () { return this; }; ChunksIterator.prototype.next = function () { var _a; var _this = this; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this.done) return { done: true, value: undefined }; for (var i = 0; i < this.length; i++) { var next = (_a = this.iterator).next.apply(_a, args); if (next.done) { this.done = true; if (this.chunk.length) { if (this.fill !== undefined) { this.chunk = this.chunk.concat(Array.from({ length: this.length - this.chunk.length }, function (_) { return _this.fill; })); } break; } return { done: true, value: undefined }; } this.chunk.push(next.value); } return { done: false, value: this.chunk.splice(0, this.length) }; }; return ChunksIterator; }()); export { ChunksIterator }; export default ChunksIterator; //# sourceMappingURL=ChunksIterator.js.map