UNPKG

2.65 kBSource Map (JSON)View Raw
1{"version":3,"sources":["iterable/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,gBAAkC,SAAQ,SAAkB;IAMhE,YACE,YAAoB,EACpB,SAAqC,EACrC,OAAkC,EAClC,cAA0C;QAE1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACzE,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SAC/B;IACH,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,QAAQ,CACtB,YAAoB,EACpB,SAAqC,EACrC,OAAkC,EAClC,cAA0C;IAE1C,OAAO,IAAI,gBAAgB,CAAkB,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AACjG,CAAC","file":"generate.js","sourcesContent":["import { IterableX } from './iterablex';\n\nclass GenerateIterable<TState, TResult> extends IterableX<TResult> {\n private _initialState: TState;\n private _condition: (value: TState) => boolean;\n private _iterate: (value: TState) => TState;\n private _resultSelector: (value: TState) => TResult;\n\n constructor(\n initialState: TState,\n condition: (value: TState) => boolean,\n iterate: (value: TState) => TState,\n resultSelector: (value: TState) => TResult\n ) {\n super();\n this._initialState = initialState;\n this._condition = condition;\n this._iterate = iterate;\n this._resultSelector = resultSelector;\n }\n\n *[Symbol.iterator]() {\n for (let i = this._initialState; this._condition(i); i = this._iterate(i)) {\n yield this._resultSelector(i);\n }\n }\n}\n\n/**\n * Generates an iterable sequence by running a state-driven loop producing the sequence's elements.\n *\n * @export\n * @template TState The type of the state used in the generator loop.\n * @template TResult The type of the elements in the produced sequence.\n * @param {TState} initialState The initial state.\n * @param {((value: TState) => boolean)} condition Condition to terminate generation (upon returning false).\n * @param {((value: TState) => TState)} iterate Iteration step function.\n * @param {((value: TState) => TResult)} resultSelector Selector function for results produced in\n * the sequence.\n * @returns {IterableX<TResult>} The generated iterable sequence.\n */\nexport function generate<TState, TResult>(\n initialState: TState,\n condition: (value: TState) => boolean,\n iterate: (value: TState) => TState,\n resultSelector: (value: TState) => TResult\n): IterableX<TResult> {\n return new GenerateIterable<TState, TResult>(initialState, condition, iterate, resultSelector);\n}\n"]}
\No newline at end of file