@lou.codes/iterables
Version:
🔁 Iterable and AsyncIterable utils
30 lines (29 loc) • 877 B
JavaScript
import { setIterator } from "./setIterator.js";
/**
* Takes a generator function and returns an iterable iterator object.
*
* @category Common
* @example
* ```typescript
* const identityGenerator = function* (value) { yield value; };
* const iterableIterator = createIterableIterator(identityGenerator);
*
* const fooIdentity = iterableIterator("foo");
*
* for (const value of fooIdentity) {
* console.log(value); // "foo"
* }
*
* // Same IterableIterator as above, return values again:
*
* for (const value of fooIdentity) {
* console.log(value); // "foo"
* }
* ```
* @param generatorFunction Generator to be used every time `[Symbol.iterator]` is called.
* @returns Iterable iterator object.
*/
export const createIterableIterator = generatorFunction => {
const generator = generatorFunction();
return setIterator(generatorFunction)(generator);
};