2025-11-13 13:13:34 -07:00

40 lines
666 B
JavaScript

/**
* Obliterator Chain Function
* ===========================
*
* Variadic function combining the given iterators.
*/
var Iterator = require('./iterator.js');
/**
* Chain.
*
* @param {...Iterator} iterators - Target iterators.
* @return {Iterator}
*/
module.exports = function chain() {
var iterators = arguments,
current,
i = -1;
return new Iterator(function iterate() {
if (!current) {
i++;
if (i >= iterators.length)
return {done: true};
current = iterators[i];
}
var step = current.next();
if (step.done) {
current = null;
return iterate();
}
return step;
});
};