0001 // 0002 // Generate.swift 0003 // Rx 0004 // 0005 // Created by Krunoslav Zaher on 9/2/15. 0006 // Copyright © 2015 Krunoslav Zaher. All rights reserved. 0007 // 0008 0009 import Foundation 0010 0011 class GenerateSink<S
Generate.swift:67 let sink = GenerateSink(parent: self, observer: observer), O
Generate.swift:12 typealias Parent = Generate<S, O.E>Generate.swift:16 private var _state: S: ObserverType> : Sink<O> { 0012 typealias Parent
Generate.swift:11 class GenerateSink<S, O: ObserverType> : Sink<O> {Generate.swift:12 typealias Parent = Generate<S, O.E>Generate.swift:18 init(parent: Parent, observer: O) {= Generate<S, O.E> 0013 0014 private let _parent
Generate.swift:14 private let _parent: ParentGenerate.swift:18 init(parent: Parent, observer: O) {: Parent 0015 0016 private var _state
Generate.swift:19 _parent = parentGenerate.swift:25 return _parent._scheduler.scheduleRecursive(true) { (isFirst, recurse) -> Void inGenerate.swift:28 self._state = try self._parent._iterate(self._state)Generate.swift:31 if try self._parent._condition(self._state) {Generate.swift:32 let result = try self._parent._resultSelector(self._state): S 0017 0018 init
Generate.swift:20 _state = parent._initialStateGenerate.swift:28 self._state = try self._parent._iterate(self._state)Generate.swift:28 self._state = try self._parent._iterate(self._state)Generate.swift:31 if try self._parent._condition(self._state) {Generate.swift:32 let result = try self._parent._resultSelector(self._state)(parent: Parent, observer: O) { 0019 _parent = parent 0020 _state = parent._initialState 0021 super.init(observer: observer) 0022 } 0023 0024 func run
Generate.swift:67 let sink = GenerateSink(parent: self, observer: observer)() -> Disposable { 0025 return _parent._scheduler.scheduleRecursive(true) { (isFirst, recurse) -> Void in 0026 do { 0027 if !isFirst { 0028 self._state = try self._parent._iterate(self._state) 0029 } 0030 0031 if try self._parent._condition(self._state) { 0032 let result = try self._parent._resultSelector(self._state) 0033 self.forwardOn(.Next(result)) 0034 0035 recurse(false) 0036 } 0037 else { 0038 self.forwardOn(.Completed) 0039 self.dispose() 0040 } 0041 } 0042 catch let error { 0043 self.forwardOn(.Error(error)) 0044 self.dispose() 0045 } 0046 } 0047 } 0048 } 0049 0050 class Generate
Generate.swift:68 sink.disposable = sink.run()<S
Generate.swift:12 typealias Parent = Generate<S, O.E>Observable+Creation.swift:144 return Generate(initialState: initialState, condition: condition, iterate: iterate, resultSelector: { $0 }, scheduler: scheduler), E
Generate.swift:51 private let _initialState: SGenerate.swift:52 private let _condition: S throws -> BoolGenerate.swift:53 private let _iterate: S throws -> SGenerate.swift:53 private let _iterate: S throws -> SGenerate.swift:54 private let _resultSelector: S throws -> EGenerate.swift:57 init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {Generate.swift:57 init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {Generate.swift:57 init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {Generate.swift:57 init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {Generate.swift:57 init(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) {> : Producer<E> { 0051 private let _initialState
Generate.swift:50 class Generate<S, E> : Producer<E> {: S 0052 private let _condition
Generate.swift:20 _state = parent._initialStateGenerate.swift:58 _initialState = initialState: S throws -> Bool 0053 private let _iterate
Generate.swift:31 if try self._parent._condition(self._state) {Generate.swift:59 _condition = condition: S throws -> S 0054 private let _resultSelector
Generate.swift:28 self._state = try self._parent._iterate(self._state)Generate.swift:60 _iterate = iterate: S throws -> E 0055 private let _scheduler
Generate.swift:32 let result = try self._parent._resultSelector(self._state)Generate.swift:61 _resultSelector = resultSelector: ImmediateSchedulerType 0056 0057 init
Generate.swift:25 return _parent._scheduler.scheduleRecursive(true) { (isFirst, recurse) -> Void inGenerate.swift:62 _scheduler = scheduler(initialState: S, condition: S throws -> Bool, iterate: S throws -> S, resultSelector: S throws -> E, scheduler: ImmediateSchedulerType) { 0058 _initialState = initialState 0059 _condition = condition 0060 _iterate = iterate 0061 _resultSelector = resultSelector 0062 _scheduler = scheduler 0063 super.init() 0064 } 0065 0066 override func run<O : ObserverType where O.E == E>(observer: O) -> Disposable { 0067 let sink = GenerateSink(parent: self, observer: observer) 0068 sink.disposable = sink.run() 0069 return sink 0070 } 0071 }
Observable+Creation.swift:144 return Generate(initialState: initialState, condition: condition, iterate: iterate, resultSelector: { $0 }, scheduler: scheduler)