iter-tools-es
Version:
The iterable toolbox
40 lines (33 loc) • 705 B
JavaScript
const {
iterableCurry
} = require('../../internal/iterable.js');
const {
__spliterate
} = require('../$spliterate/spliterate.js');
function* batchSpliterator(split, {
size
}, source) {
let i = 0;
for (const value of source) {
if (i === size) {
yield split;
i = 0;
}
yield value;
i++;
}
}
function __batch(source, size) {
return __spliterate(source, batchSpliterator, {
size
});
}
exports.__batch = __batch;
const batch = /*#__PURE__*/iterableCurry(__batch, {
validateArgs(args) {
if (typeof args[1] !== 'number' || args[1] < 1) {
throw new TypeError('batch size should be a number greater than zero');
}
}
});
exports.batch = batch;