@@ -205,75 +205,29 @@ extension Signal.Event: EventProtocol {
205
205
// This operator performs side effect upon interruption.
206
206
207
207
extension Signal . Event {
208
- internal typealias Transformation < U, E: Swift . Error > = ( @escaping Signal < U , E > . Observer . Action , Lifetime ) -> Signal < Value , Error > . Observer . Action
208
+ internal typealias Transformation < U, E: Swift . Error > = ( ReactiveSwift . Observer < U , E > , Lifetime ) -> ReactiveSwift . Observer < Value , Error >
209
209
210
210
internal static func filter( _ isIncluded: @escaping ( Value ) -> Bool ) -> Transformation < Value , Error > {
211
- return { action, _ in
212
- return { event in
213
- switch event {
214
- case let . value( value) :
215
- if isIncluded ( value) {
216
- action ( . value( value) )
217
- }
218
-
219
- case . completed:
220
- action ( . completed)
221
-
222
- case let . failed( error) :
223
- action ( . failed( error) )
224
-
225
- case . interrupted:
226
- action ( . interrupted)
227
- }
228
- }
211
+ return { downstream, _ in
212
+ Operators . Filter ( downstream: downstream, predicate: isIncluded)
229
213
}
230
214
}
231
215
232
216
internal static func compactMap< U> ( _ transform: @escaping ( Value ) -> U ? ) -> Transformation < U , Error > {
233
- return { action, _ in
234
- return { event in
235
- switch event {
236
- case let . value( value) :
237
- if let newValue = transform ( value) {
238
- action ( . value( newValue) )
239
- }
240
-
241
- case . completed:
242
- action ( . completed)
243
-
244
- case let . failed( error) :
245
- action ( . failed( error) )
246
-
247
- case . interrupted:
248
- action ( . interrupted)
249
- }
250
- }
217
+ return { downstream, _ in
218
+ Operators . CompactMap ( downstream: downstream, transform: transform)
251
219
}
252
220
}
253
221
254
222
internal static func map< U> ( _ transform: @escaping ( Value ) -> U ) -> Transformation < U , Error > {
255
223
return { action, _ in
256
- return { event in
257
- switch event {
258
- case let . value( value) :
259
- action ( . value( transform ( value) ) )
260
-
261
- case . completed:
262
- action ( . completed)
263
-
264
- case let . failed( error) :
265
- action ( . failed( error) )
266
-
267
- case . interrupted:
268
- action ( . interrupted)
269
- }
270
- }
224
+ Operators . Map ( downstream: action, transform: transform)
271
225
}
272
226
}
273
227
274
228
internal static func mapError< E> ( _ transform: @escaping ( Error ) -> E ) -> Transformation < Value , E > {
275
229
return { action, _ in
276
- return { event in
230
+ return Signal . Observer { event in
277
231
switch event {
278
232
case let . value( value) :
279
233
action ( . value( value) )
@@ -293,7 +247,7 @@ extension Signal.Event {
293
247
294
248
internal static var materialize : Transformation < Signal < Value , Error > . Event , Never > {
295
249
return { action, _ in
296
- return { event in
250
+ return Signal . Observer { event in
297
251
action ( . value( event) )
298
252
299
253
switch event {
@@ -312,7 +266,7 @@ extension Signal.Event {
312
266
313
267
internal static var materializeResults : Transformation < Result < Value , Error > , Never > {
314
268
return { action, _ in
315
- return { event in
269
+ return Signal . Observer { event in
316
270
switch event {
317
271
case . value( let value) :
318
272
action ( . value( Result ( success: value) ) )
@@ -333,7 +287,7 @@ extension Signal.Event {
333
287
334
288
internal static func attemptMap< U> ( _ transform: @escaping ( Value ) -> Result < U , Error > ) -> Transformation < U , Error > {
335
289
return { action, _ in
336
- return { event in
290
+ return Signal . Observer { event in
337
291
switch event {
338
292
case let . value( value) :
339
293
switch transform ( value) {
@@ -382,7 +336,7 @@ extension Signal.Event {
382
336
return { action, _ in
383
337
var taken = 0
384
338
385
- return { event in
339
+ return Signal . Observer { event in
386
340
guard let value = event. value else {
387
341
action ( event)
388
342
return
@@ -405,7 +359,7 @@ extension Signal.Event {
405
359
var buffer : [ Value ] = [ ]
406
360
buffer. reserveCapacity ( count)
407
361
408
- return { event in
362
+ return Signal . Observer { event in
409
363
switch event {
410
364
case let . value( value) :
411
365
// To avoid exceeding the reserved capacity of the buffer,
@@ -430,7 +384,7 @@ extension Signal.Event {
430
384
431
385
internal static func take( while shouldContinue: @escaping ( Value ) -> Bool ) -> Transformation < Value , Error > {
432
386
return { action, _ in
433
- return { event in
387
+ return Signal . Observer { event in
434
388
if let value = event. value, !shouldContinue( value) {
435
389
action ( . completed)
436
390
} else {
@@ -446,7 +400,7 @@ extension Signal.Event {
446
400
return { action, _ in
447
401
var skipped = 0
448
402
449
- return { event in
403
+ return Signal . Observer { event in
450
404
if case . value = event, skipped < count {
451
405
skipped += 1
452
406
} else {
@@ -460,7 +414,7 @@ extension Signal.Event {
460
414
return { action, _ in
461
415
var isSkipping = true
462
416
463
- return { event in
417
+ return Signal . Observer { event in
464
418
switch event {
465
419
case let . value( value) :
466
420
isSkipping = isSkipping && shouldContinue ( value)
@@ -479,7 +433,7 @@ extension Signal.Event {
479
433
extension Signal . Event where Value: EventProtocol , Error == Never {
480
434
internal static var dematerialize : Transformation < Value . Value , Value . Error > {
481
435
return { action, _ in
482
- return { event in
436
+ return Signal . Observer { event in
483
437
switch event {
484
438
case let . value( innerEvent) :
485
439
action ( innerEvent. event)
@@ -501,7 +455,7 @@ extension Signal.Event where Value: EventProtocol, Error == Never {
501
455
extension Signal . Event where Value: ResultProtocol , Error == Never {
502
456
internal static var dematerializeResults : Transformation < Value . Success , Value . Failure > {
503
457
return { action, _ in
504
- return { event in
458
+ return Signal . Observer { event in
505
459
let event = event. map { $0. result }
506
460
507
461
switch event {
@@ -577,7 +531,7 @@ extension Signal.Event {
577
531
return { action, _ in
578
532
let state = CollectState < Value > ( )
579
533
580
- return { event in
534
+ return Signal . Observer { event in
581
535
switch event {
582
536
case let . value( value) :
583
537
state. append ( value)
@@ -603,7 +557,7 @@ extension Signal.Event {
603
557
return { action, _ in
604
558
let state = CollectState < Value > ( )
605
559
606
- return { event in
560
+ return Signal . Observer { event in
607
561
switch event {
608
562
case let . value( value) :
609
563
if shouldEmit ( state. values, value) {
@@ -633,7 +587,7 @@ extension Signal.Event {
633
587
return { action, _ in
634
588
var previous = initial
635
589
636
- return { event in
590
+ return Signal . Observer { event in
637
591
switch event {
638
592
case let . value( value) :
639
593
if let previous = previous {
@@ -655,7 +609,7 @@ extension Signal.Event {
655
609
return { action, _ in
656
610
var previous : Value ?
657
611
658
- return { event in
612
+ return Signal . Observer { event in
659
613
switch event {
660
614
case let . value( value) :
661
615
if let previous = previous, isEquivalent ( previous, value) {
@@ -674,7 +628,7 @@ extension Signal.Event {
674
628
return { action, _ in
675
629
var seenValues : Set < Identity > = [ ]
676
630
677
- return { event in
631
+ return Signal . Observer { event in
678
632
switch event {
679
633
case let . value( value) :
680
634
let identity = transform ( value)
@@ -694,7 +648,7 @@ extension Signal.Event {
694
648
return { action, _ in
695
649
var accumulator = initialResult
696
650
697
- return { event in
651
+ return Signal . Observer { event in
698
652
switch event {
699
653
case let . value( value) :
700
654
nextPartialResult ( & accumulator, value)
@@ -729,7 +683,7 @@ extension Signal.Event {
729
683
return { action, _ in
730
684
var accumulator = initialState
731
685
732
- return { event in
686
+ return Signal . Observer { event in
733
687
switch event {
734
688
case let . value( value) :
735
689
let output = next ( & accumulator, value)
@@ -761,7 +715,7 @@ extension Signal.Event {
761
715
}
762
716
}
763
717
764
- return { event in
718
+ return Signal . Observer { event in
765
719
scheduler. schedule {
766
720
if !lifetime. hasEnded {
767
721
action ( event)
@@ -786,7 +740,7 @@ extension Signal.Event {
786
740
}
787
741
}
788
742
789
- return { event in
743
+ return Signal . Observer { event in
790
744
switch event {
791
745
case let . value( value) :
792
746
// Schedule only when there is no prior outstanding value.
@@ -828,7 +782,7 @@ extension Signal.Event {
828
782
}
829
783
}
830
784
831
- return { event in
785
+ return Signal . Observer { event in
832
786
switch event {
833
787
case . failed, . interrupted:
834
788
scheduler. schedule {
@@ -859,7 +813,7 @@ extension Signal.Event {
859
813
scheduler. schedule { action ( . interrupted) }
860
814
}
861
815
862
- return { event in
816
+ return Signal . Observer { event in
863
817
guard let value = event. value else {
864
818
schedulerDisposable. inner = scheduler. schedule {
865
819
action ( event)
@@ -901,7 +855,7 @@ extension Signal.Event {
901
855
scheduler. schedule { action ( . interrupted) }
902
856
}
903
857
904
- return { event in
858
+ return Signal . Observer { event in
905
859
switch event {
906
860
case let . value( value) :
907
861
state. modify { state in
@@ -960,7 +914,7 @@ extension Signal.Event {
960
914
scheduler. schedule { action ( . interrupted) }
961
915
}
962
916
963
- return { event in
917
+ return Signal . Observer { event in
964
918
switch event {
965
919
case let . value( value) :
966
920
state. modify { $0. values. append ( value) }
@@ -1016,7 +970,7 @@ private struct ThrottleState<Value> {
1016
970
extension Signal . Event where Error == Never {
1017
971
internal static func promoteError< F> ( _: F . Type ) -> Transformation < Value , F > {
1018
972
return { action, _ in
1019
- return { event in
973
+ return Signal . Observer { event in
1020
974
switch event {
1021
975
case let . value( value) :
1022
976
action ( . value( value) )
@@ -1035,7 +989,7 @@ extension Signal.Event where Error == Never {
1035
989
extension Signal . Event where Value == Never {
1036
990
internal static func promoteValue< U> ( _: U . Type ) -> Transformation < U , Error > {
1037
991
return { action, _ in
1038
- return { event in
992
+ return Signal . Observer { event in
1039
993
action ( event. promoteValue ( ) )
1040
994
}
1041
995
}
0 commit comments