@jasmith79/sequable
Version:
Library functions for working with generators
47 lines (46 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toIterable = exports.toIterator = void 0;
function isIterable(x) {
return Boolean(x && typeof x[Symbol.iterator] === "function");
}
/**
* Converts the given Iterable or generator function to an Iterator, given
* an Iterator just returns it.
*
* @param iter The Iterable, Iterator, or generator function to convert.
*/
function toIterator(iter) {
if (isIterable(iter)) {
return iter[Symbol.iterator]();
}
else if (typeof iter === "function") {
return iter();
}
else {
return iter;
}
}
exports.toIterator = toIterator;
/**
* Converts the given Iterator or generator function to an Iterable, given
* an Iterable just returns it.
*
* @param iter The Iterable, Iterator, or generator function to convert.
*/
function toIterable(iter) {
if (isIterable(iter)) {
return iter;
}
else if (typeof iter === "function") {
return {
[Symbol.iterator]: iter,
};
}
else {
return {
[Symbol.iterator]: () => iter,
};
}
}
exports.toIterable = toIterable;