@jasmith79/sequable
Version:
Library functions for working with generators
42 lines (41 loc) • 991 B
JavaScript
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.
*/
export function toIterator(iter) {
if (isIterable(iter)) {
return iter[Symbol.iterator]();
}
else if (typeof iter === "function") {
return iter();
}
else {
return iter;
}
}
/**
* 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.
*/
export function toIterable(iter) {
if (isIterable(iter)) {
return iter;
}
else if (typeof iter === "function") {
return {
[Symbol.iterator]: iter,
};
}
else {
return {
[Symbol.iterator]: () => iter,
};
}
}