0001 // 0002 // DistinctUntilChanged.swift 0003 // Rx 0004 // 0005 // Created by Krunoslav Zaher on 3/15/15. 0006 // Copyright © 2015 Krunoslav Zaher. All rights reserved. 0007 // 0008 0009 import Foundation 0010 0011 class DistinctUntilChangedSink<O
DistinctUntilChanged.swift:66 let sink = DistinctUntilChangedSink(parent: self, observer: observer): ObserverType, Key
DistinctUntilChanged.swift:11 class DistinctUntilChangedSink<O: ObserverType, Key>: Sink<O>, ObserverType {DistinctUntilChanged.swift:12 typealias E = O.EDistinctUntilChanged.swift:17 init(parent: DistinctUntilChanged<E, Key>, observer: O) {>: Sink<O>, ObserverType { 0012 typealias E
DistinctUntilChanged.swift:14 private let _parent: DistinctUntilChanged<E, Key>DistinctUntilChanged.swift:15 private var _currentKey: Key? = nilDistinctUntilChanged.swift:17 init(parent: DistinctUntilChanged<E, Key>, observer: O) {= O.E 0013 0014 private let _parent
DistinctUntilChanged.swift:14 private let _parent: DistinctUntilChanged<E, Key>DistinctUntilChanged.swift:17 init(parent: DistinctUntilChanged<E, Key>, observer: O) {DistinctUntilChanged.swift:22 func on(event: Event<E>) {: DistinctUntilChanged<E, Key> 0015 private var _currentKey
DistinctUntilChanged.swift:18 _parent = parentDistinctUntilChanged.swift:26 let key = try _parent._selector(value)DistinctUntilChanged.swift:29 areEqual = try _parent._comparer(currentKey, key): Key? = nil 0016 0017 init
DistinctUntilChanged.swift:28 if let currentKey = _currentKey {DistinctUntilChanged.swift:36 _currentKey = key(parent: DistinctUntilChanged<E, Key>, observer: O) { 0018 _parent = parent 0019 super.init(observer: observer) 0020 } 0021 0022 func on(event: Event<E>) { 0023 switch event { 0024 case .Next(let value): 0025 do { 0026 let key = try _parent._selector(value) 0027 var areEqual = false 0028 if let currentKey = _currentKey { 0029 areEqual = try _parent._comparer(currentKey, key) 0030 } 0031 0032 if areEqual { 0033 return 0034 } 0035 0036 _currentKey = key 0037 0038 forwardOn(event) 0039 } 0040 catch let error { 0041 forwardOn(.Error(error)) 0042 dispose() 0043 } 0044 case .Error, .Completed: 0045 forwardOn(event) 0046 dispose() 0047 } 0048 } 0049 } 0050 0051 class DistinctUntilChanged
DistinctUntilChanged.swift:66 let sink = DistinctUntilChangedSink(parent: self, observer: observer)<Element
DistinctUntilChanged.swift:14 private let _parent: DistinctUntilChanged<E, Key>DistinctUntilChanged.swift:17 init(parent: DistinctUntilChanged<E, Key>, observer: O) {Observable+Single.swift:70 return DistinctUntilChanged(source: self.asObservable(), selector: keySelector, comparer: comparer), Key
DistinctUntilChanged.swift:51 class DistinctUntilChanged<Element, Key>: Producer<Element> {DistinctUntilChanged.swift:52 typealias KeySelector = (Element) throws -> KeyDistinctUntilChanged.swift:55 private let _source: Observable<Element>DistinctUntilChanged.swift:59 init(source: Observable<Element>, selector: KeySelector, comparer: EqualityComparer) {DistinctUntilChanged.swift:65 override func run<O: ObserverType where O.E == Element>(observer: O) -> Disposable {>: Producer<Element> { 0052 typealias KeySelector
DistinctUntilChanged.swift:52 typealias KeySelector = (Element) throws -> KeyDistinctUntilChanged.swift:53 typealias EqualityComparer = (Key, Key) throws -> BoolDistinctUntilChanged.swift:53 typealias EqualityComparer = (Key, Key) throws -> Bool= (Element) throws -> Key 0053 typealias EqualityComparer
DistinctUntilChanged.swift:56 private let _selector: KeySelectorDistinctUntilChanged.swift:59 init(source: Observable<Element>, selector: KeySelector, comparer: EqualityComparer) {= (Key, Key) throws -> Bool 0054 0055 private let _source
DistinctUntilChanged.swift:57 private let _comparer: EqualityComparerDistinctUntilChanged.swift:59 init(source: Observable<Element>, selector: KeySelector, comparer: EqualityComparer) {: Observable<Element> 0056 private let _selector
DistinctUntilChanged.swift:60 _source = sourceDistinctUntilChanged.swift:67 sink.disposable = _source.subscribe(sink): KeySelector 0057 private let _comparer
DistinctUntilChanged.swift:26 let key = try _parent._selector(value)DistinctUntilChanged.swift:61 _selector = selector: EqualityComparer 0058 0059 init
DistinctUntilChanged.swift:29 areEqual = try _parent._comparer(currentKey, key)DistinctUntilChanged.swift:62 _comparer = comparer(source: Observable<Element>, selector: KeySelector, comparer: EqualityComparer) { 0060 _source = source 0061 _selector = selector 0062 _comparer = comparer 0063 } 0064 0065 override func run<O: ObserverType where O.E == Element>(observer: O) -> Disposable { 0066 let sink = DistinctUntilChangedSink(parent: self, observer: observer) 0067 sink.disposable = _source.subscribe(sink) 0068 return sink 0069 } 0070 }
Observable+Single.swift:70 return DistinctUntilChanged(source: self.asObservable(), selector: keySelector, comparer: comparer)