UNPKG

iter-tools-es

Version:
43 lines (36 loc) 853 B
const { iterableCurry } = require('../../internal/iterable.js'); const { __interleave } = require('../$interleave/interleave.js'); const { makeValidateArgs } = require('./internal/validate-args.js'); function* byPosition({ start, step }, all, ...peekrs) { start = start % peekrs.length; for (let i = start; !all.done; i = (i + step) % peekrs.length) { const peekr = peekrs[i]; if (!peekr.done) { yield peekr.value; peekr.advance(); } } } function __roundRobin(sources, step = 1, start = 0) { return __interleave(sources, byPosition, { start, step }); } exports.__roundRobin = __roundRobin; const roundRobin = /*#__PURE__*/iterableCurry(__roundRobin, { variadic: true, minArgs: 0, maxArgs: 2, validateArgs: /*#__PURE__*/makeValidateArgs('roundRobin') }); exports.roundRobin = roundRobin;