0001 // 0002 // Reduce.swift 0003 // Rx 0004 // 0005 // Created by Krunoslav Zaher on 4/1/15. 0006 // Copyright © 2015 Krunoslav Zaher. All rights reserved. 0007 // 0008 0009 import Foundation 0010 0011 class ReduceSink<SourceType
Reduce.swift:70 let sink = ReduceSink(parent: self, observer: observer), AccumulateType
Reduce.swift:13 typealias Parent = Reduce<SourceType, AccumulateType, ResultType>Reduce.swift:25 func on(event: Event<SourceType>) {, O
Reduce.swift:13 typealias Parent = Reduce<SourceType, AccumulateType, ResultType>Reduce.swift:16 private var _accumulation: AccumulateType: ObserverType> : Sink<O>, ObserverType { 0012 typealias ResultType
Reduce.swift:11 class ReduceSink<SourceType, AccumulateType, O: ObserverType> : Sink<O>, ObserverType {Reduce.swift:12 typealias ResultType = O.EReduce.swift:18 init(parent: Parent, observer: O) {= O.E 0013 typealias Parent
Reduce.swift:13 typealias Parent = Reduce<SourceType, AccumulateType, ResultType>= Reduce<SourceType, AccumulateType, ResultType> 0014 0015 private let _parent
Reduce.swift:15 private let _parent: ParentReduce.swift:18 init(parent: Parent, observer: O) {: Parent 0016 private var _accumulation
Reduce.swift:19 _parent = parentReduce.swift:29 _accumulation = try _parent._accumulator(_accumulation, value)Reduce.swift:40 let result = try _parent._mapResult(_accumulation): AccumulateType 0017 0018 init
Reduce.swift:20 _accumulation = parent._seedReduce.swift:29 _accumulation = try _parent._accumulator(_accumulation, value)Reduce.swift:29 _accumulation = try _parent._accumulator(_accumulation, value)Reduce.swift:40 let result = try _parent._mapResult(_accumulation)(parent: Parent, observer: O) { 0019 _parent = parent 0020 _accumulation = parent._seed 0021 0022 super.init(observer: observer) 0023 } 0024 0025 func on(event: Event<SourceType>) { 0026 switch event { 0027 case .Next(let value): 0028 do { 0029 _accumulation = try _parent._accumulator(_accumulation, value) 0030 } 0031 catch let e { 0032 forwardOn(.Error(e)) 0033 dispose() 0034 } 0035 case .Error(let e): 0036 forwardOn(.Error(e)) 0037 dispose() 0038 case .Completed: 0039 do { 0040 let result = try _parent._mapResult(_accumulation) 0041 forwardOn(.Next(result)) 0042 forwardOn(.Completed) 0043 dispose() 0044 } 0045 catch let e { 0046 forwardOn(.Error(e)) 0047 dispose() 0048 } 0049 } 0050 } 0051 } 0052 0053 class Reduce
Reduce.swift:70 let sink = ReduceSink(parent: self, observer: observer)<SourceType
Observable+Aggregate.swift:30 return Reduce(source: self.asObservable(), seed: seed, accumulator: accumulator, mapResult: mapResult)Observable+Aggregate.swift:47 return Reduce(source: self.asObservable(), seed: seed, accumulator: accumulator, mapResult: { $0 })Reduce.swift:13 typealias Parent = Reduce<SourceType, AccumulateType, ResultType>, AccumulateType
Reduce.swift:54 typealias AccumulatorType = (AccumulateType, SourceType) throws -> AccumulateTypeReduce.swift:57 private let _source: Observable<SourceType>Reduce.swift:62 init(source: Observable<SourceType>, seed: AccumulateType, accumulator: AccumulatorType, mapResult: ResultSelectorType) {, ResultType
Reduce.swift:54 typealias AccumulatorType = (AccumulateType, SourceType) throws -> AccumulateTypeReduce.swift:54 typealias AccumulatorType = (AccumulateType, SourceType) throws -> AccumulateTypeReduce.swift:55 typealias ResultSelectorType = (AccumulateType) throws -> ResultTypeReduce.swift:58 private let _seed: AccumulateTypeReduce.swift:62 init(source: Observable<SourceType>, seed: AccumulateType, accumulator: AccumulatorType, mapResult: ResultSelectorType) {> : Producer<ResultType> { 0054 typealias AccumulatorType
Reduce.swift:53 class Reduce<SourceType, AccumulateType, ResultType> : Producer<ResultType> {Reduce.swift:55 typealias ResultSelectorType = (AccumulateType) throws -> ResultTypeReduce.swift:69 override func run<O: ObserverType where O.E == ResultType>(observer: O) -> Disposable {= (AccumulateType, SourceType) throws -> AccumulateType 0055 typealias ResultSelectorType
Reduce.swift:59 private let _accumulator: AccumulatorTypeReduce.swift:62 init(source: Observable<SourceType>, seed: AccumulateType, accumulator: AccumulatorType, mapResult: ResultSelectorType) {= (AccumulateType) throws -> ResultType 0056 0057 private let _source
Reduce.swift:60 private let _mapResult: ResultSelectorTypeReduce.swift:62 init(source: Observable<SourceType>, seed: AccumulateType, accumulator: AccumulatorType, mapResult: ResultSelectorType) {: Observable<SourceType> 0058 private let _seed
Reduce.swift:63 _source = sourceReduce.swift:71 sink.disposable = _source.subscribe(sink): AccumulateType 0059 private let _accumulator
Reduce.swift:20 _accumulation = parent._seedReduce.swift:64 _seed = seed: AccumulatorType 0060 private let _mapResult
Reduce.swift:29 _accumulation = try _parent._accumulator(_accumulation, value)Reduce.swift:65 _accumulator = accumulator: ResultSelectorType 0061 0062 init
Reduce.swift:40 let result = try _parent._mapResult(_accumulation)Reduce.swift:66 _mapResult = mapResult(source: Observable<SourceType>, seed: AccumulateType, accumulator: AccumulatorType, mapResult: ResultSelectorType) { 0063 _source = source 0064 _seed = seed 0065 _accumulator = accumulator 0066 _mapResult = mapResult 0067 } 0068 0069 override func run<O: ObserverType where O.E == ResultType>(observer: O) -> Disposable { 0070 let sink = ReduceSink(parent: self, observer: observer) 0071 sink.disposable = _source.subscribe(sink) 0072 return sink 0073 } 0074 }
Observable+Aggregate.swift:30 return Reduce(source: self.asObservable(), seed: seed, accumulator: accumulator, mapResult: mapResult)Observable+Aggregate.swift:47 return Reduce(source: self.asObservable(), seed: seed, accumulator: accumulator, mapResult: { $0 })