File tree Expand file tree Collapse file tree 2 files changed +58
-4
lines changed
language-adaptors/rxjava-clojure/src
main/clojure/rx/lang/clojure
test/clojure/rx/lang/clojure Expand file tree Collapse file tree 2 files changed +58
-4
lines changed Original file line number Diff line number Diff line change 4
4
empty every?
5
5
filter first future
6
6
group-by
7
- interpose into
7
+ interleave interpose into
8
8
keep keep-indexed
9
9
map mapcat map-indexed
10
10
merge next nth partition reduce reductions
25
25
26
26
(set! *warn-on-reflection* true )
27
27
28
- (declare concat map map-indexed reduce take take-while )
28
+ (declare concat* concat map* map map-indexed reduce take take-while )
29
29
30
30
(defn ^Func1 fn->predicate
31
31
" Turn f into a predicate that returns true/false like Rx predicates should"
484
484
(map (fn [^GroupedObservable go]
485
485
(clojure.lang.MapEntry. (.getKey go) go))))))
486
486
487
+ (defn interleave*
488
+ " Returns an Observable of the first item in each Observable emitted by observables, then
489
+ the second etc.
490
+
491
+ observables is an Observable of Observables
492
+
493
+ See:
494
+ interleave
495
+ clojure.core/interleave
496
+ "
497
+ [observables]
498
+ (->> (map* #(seq->o %&) observables)
499
+ (concat* )))
500
+
501
+ (defn interleave
502
+ " Returns an Observable of the first item in each Observable, then the second etc.
503
+
504
+ Each argument is an individual Observable
505
+
506
+ See:
507
+ observable*
508
+ clojure.core/interleave
509
+ "
510
+ [o1 & observables]
511
+ (->> (apply map #(seq->o %&) o1 observables)
512
+ (concat* )))
513
+
487
514
(defn interpose
488
515
[sep xs]
489
516
(let [op (operator* (fn [o]
Original file line number Diff line number Diff line change 284
284
(rx/mapcat (fn [[k vo :as me]]
285
285
(is (instance? clojure.lang.MapEntry me))
286
286
(rx/map #(vector k %) vo)))
287
- (b/into [])))))
288
- ))
287
+ (b/into [])))))))
288
+
289
+ (deftest test-interleave
290
+ (are [inputs] (= (apply interleave inputs)
291
+ (->> (apply rx/interleave (map rx/seq->o inputs))
292
+ (b/into [])))
293
+ [[] []]
294
+ [[] [1 ]]
295
+ [(range 5 ) (range 10 ) (range 10 ) (range 3 )]
296
+ [(range 50 ) (range 10 )]
297
+ [(range 5 ) (range 10 60 ) (range 10 ) (range 50 )])
298
+
299
+ ; one-arg case, not supported by clojure.core/interleave
300
+ (is (= (range 10 )
301
+ (->> (rx/interleave (rx/seq->o (range 10 )))
302
+ (b/into [])))))
303
+
304
+ (deftest test-interleave*
305
+ (are [inputs] (= (apply interleave inputs)
306
+ (->> (rx/interleave* (->> inputs
307
+ (map rx/seq->o)
308
+ (rx/seq->o )))
309
+ (b/into [])))
310
+ [[] []]
311
+ [[] [1 ]]
312
+ [(range 5 ) (range 10 ) (range 10 ) (range 3 )]
313
+ [(range 50 ) (range 10 )]
314
+ [(range 5 ) (range 10 60 ) (range 10 ) (range 50 )]))
315
+
289
316
(deftest test-interpose
290
317
(is (= (interpose \, [1 2 3 ])
291
318
(b/into [] (rx/interpose \, (rx/seq->o [1 2 3 ]))))))
You can’t perform that action at this time.
0 commit comments