UNPKG

@jasmith79/sequable

Version:

Library functions for working with generators

42 lines (41 loc) 991 B
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, }; } }