UNPKG

@reactivex/ix-es5-esm

Version:

The Interactive Extensions for JavaScript

52 lines (50 loc) 2.13 kB
import { __extends, __generator } from "tslib"; import { IterableX } from './iterablex.js'; var GenerateIterable = /** @class */ (function (_super) { __extends(GenerateIterable, _super); function GenerateIterable(initialState, condition, iterate, resultSelector) { var _this = _super.call(this) || this; _this._initialState = initialState; _this._condition = condition; _this._iterate = iterate; _this._resultSelector = resultSelector; return _this; } GenerateIterable.prototype[Symbol.iterator] = function () { var i; return __generator(this, function (_a) { switch (_a.label) { case 0: i = this._initialState; _a.label = 1; case 1: if (!this._condition(i)) return [3 /*break*/, 4]; return [4 /*yield*/, this._resultSelector(i)]; case 2: _a.sent(); _a.label = 3; case 3: i = this._iterate(i); return [3 /*break*/, 1]; case 4: return [2 /*return*/]; } }); }; return GenerateIterable; }(IterableX)); /** * Generates an iterable sequence by running a state-driven loop producing the sequence's elements. * * @template TState The type of the state used in the generator loop. * @template TResult The type of the elements in the produced sequence. * @param {TState} initialState The initial state. * @param {((value: TState) => boolean)} condition Condition to terminate generation (upon returning false). * @param {((value: TState) => TState)} iterate Iteration step function. * @param {((value: TState) => TResult)} resultSelector Selector function for results produced in * the sequence. * @returns {IterableX<TResult>} The generated iterable sequence. */ export function generate(initialState, condition, iterate, resultSelector) { return new GenerateIterable(initialState, condition, iterate, resultSelector); } //# sourceMappingURL=generate.js.map