rx_ruby 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +22 -0
  3. data/.gitignore +173 -0
  4. data/.travis.yml +10 -0
  5. data/Gemfile +4 -0
  6. data/Rakefile +11 -0
  7. data/examples/aggregate.rb +39 -0
  8. data/examples/amb.rb +25 -0
  9. data/examples/ambproto.rb +24 -0
  10. data/examples/and.rb +26 -0
  11. data/examples/as_observable.rb +25 -0
  12. data/examples/average.rb +43 -0
  13. data/examples/buffer_with_count.rb +44 -0
  14. data/examples/buffer_with_time.rb +51 -0
  15. data/examples/case.rb +29 -0
  16. data/examples/catch.rb +20 -0
  17. data/examples/catchproto.rb +39 -0
  18. data/examples/combine_latest.rb +35 -0
  19. data/examples/combine_latestproto.rb +33 -0
  20. data/examples/concat.rb +22 -0
  21. data/examples/concat_all.rb +27 -0
  22. data/examples/concat_map.rb +61 -0
  23. data/examples/concat_map_observer.rb +29 -0
  24. data/examples/concatproto.rb +25 -0
  25. data/examples/connect.rb +41 -0
  26. data/examples/contains.rb +37 -0
  27. data/examples/count.rb +36 -0
  28. data/examples/create.rb +55 -0
  29. data/examples/debounce.rb +35 -0
  30. data/examples/default_if_empty.rb +35 -0
  31. data/examples/defer.rb +20 -0
  32. data/examples/delay.rb +49 -0
  33. data/examples/delay_with_selector.rb +63 -0
  34. data/examples/dematerialize.rb +22 -0
  35. data/examples/disposable.rb +12 -0
  36. data/examples/distinct.rb +43 -0
  37. data/examples/distinct_until_changed.rb +43 -0
  38. data/examples/do.rb +59 -0
  39. data/examples/empty.rb +16 -0
  40. data/examples/for.rb +26 -0
  41. data/examples/fork_join.rb +23 -0
  42. data/examples/from.rb +106 -0
  43. data/examples/from_array.rb +21 -0
  44. data/examples/from_callback.rb +21 -0
  45. data/examples/generate.rb +24 -0
  46. data/examples/group_join.rb +39 -0
  47. data/examples/if.rb +46 -0
  48. data/examples/intervals.rb +26 -0
  49. data/examples/merge.rb +36 -0
  50. data/examples/merge_all.rb +27 -0
  51. data/examples/multicast.rb +32 -0
  52. data/examples/never.rb +15 -0
  53. data/examples/of.rb +19 -0
  54. data/examples/on_error_resume_next.rb +21 -0
  55. data/examples/pairs.rb +26 -0
  56. data/examples/publish.rb +79 -0
  57. data/examples/range.rb +19 -0
  58. data/examples/reduce.rb +18 -0
  59. data/examples/repeat.rb +19 -0
  60. data/examples/return.rb +17 -0
  61. data/examples/scan.rb +41 -0
  62. data/examples/start.rb +29 -0
  63. data/examples/throw.rb +17 -0
  64. data/examples/time_intervals.rb +28 -0
  65. data/examples/timer.rb +26 -0
  66. data/examples/timestamp.rb +28 -0
  67. data/examples/to_a.rb +23 -0
  68. data/examples/to_async.rb +26 -0
  69. data/examples/using.rb +52 -0
  70. data/examples/when.rb +26 -0
  71. data/examples/while.rb +25 -0
  72. data/examples/window_with_time.rb +78 -0
  73. data/examples/zip.rb +27 -0
  74. data/examples/zip_array.rb +25 -0
  75. data/lib/core_ext/enumerable.rb +22 -0
  76. data/lib/rx_ruby.rb +27 -0
  77. data/lib/rx_ruby/concurrency/async_lock.rb +57 -0
  78. data/lib/rx_ruby/concurrency/current_thread_scheduler.rb +75 -0
  79. data/lib/rx_ruby/concurrency/default_scheduler.rb +51 -0
  80. data/lib/rx_ruby/concurrency/historical_scheduler.rb +16 -0
  81. data/lib/rx_ruby/concurrency/immediate_scheduler.rb +68 -0
  82. data/lib/rx_ruby/concurrency/local_scheduler.rb +39 -0
  83. data/lib/rx_ruby/concurrency/periodic_scheduler.rb +74 -0
  84. data/lib/rx_ruby/concurrency/scheduled_item.rb +42 -0
  85. data/lib/rx_ruby/concurrency/scheduler.rb +150 -0
  86. data/lib/rx_ruby/concurrency/virtual_time_scheduler.rb +170 -0
  87. data/lib/rx_ruby/core/async_lock_observer.rb +46 -0
  88. data/lib/rx_ruby/core/auto_detach_observer.rb +59 -0
  89. data/lib/rx_ruby/core/checked_observer.rb +66 -0
  90. data/lib/rx_ruby/core/notification.rb +161 -0
  91. data/lib/rx_ruby/core/observable.rb +104 -0
  92. data/lib/rx_ruby/core/observe_on_observer.rb +50 -0
  93. data/lib/rx_ruby/core/observer.rb +119 -0
  94. data/lib/rx_ruby/core/scheduled_observer.rb +83 -0
  95. data/lib/rx_ruby/core/synchronized_observer.rb +47 -0
  96. data/lib/rx_ruby/core/time_interval.rb +17 -0
  97. data/lib/rx_ruby/internal/priority_queue.rb +122 -0
  98. data/lib/rx_ruby/internal/util.rb +9 -0
  99. data/lib/rx_ruby/joins/active_plan.rb +45 -0
  100. data/lib/rx_ruby/joins/join_observer.rb +51 -0
  101. data/lib/rx_ruby/joins/pattern.rb +14 -0
  102. data/lib/rx_ruby/joins/plan.rb +44 -0
  103. data/lib/rx_ruby/linq/connectable_observable.rb +34 -0
  104. data/lib/rx_ruby/linq/observable/_observable_timer_date_and_period.rb +22 -0
  105. data/lib/rx_ruby/linq/observable/_observable_timer_time_span.rb +14 -0
  106. data/lib/rx_ruby/linq/observable/_observable_timer_time_span_and_period.rb +20 -0
  107. data/lib/rx_ruby/linq/observable/aggregate.rb +7 -0
  108. data/lib/rx_ruby/linq/observable/and.rb +7 -0
  109. data/lib/rx_ruby/linq/observable/case.rb +15 -0
  110. data/lib/rx_ruby/linq/observable/concat_all.rb +7 -0
  111. data/lib/rx_ruby/linq/observable/concat_map.rb +35 -0
  112. data/lib/rx_ruby/linq/observable/concat_map_observer.rb +43 -0
  113. data/lib/rx_ruby/linq/observable/contains.rb +28 -0
  114. data/lib/rx_ruby/linq/observable/debounce.rb +41 -0
  115. data/lib/rx_ruby/linq/observable/delay.rb +81 -0
  116. data/lib/rx_ruby/linq/observable/delay_with_selector.rb +64 -0
  117. data/lib/rx_ruby/linq/observable/do.rb +42 -0
  118. data/lib/rx_ruby/linq/observable/for.rb +13 -0
  119. data/lib/rx_ruby/linq/observable/fork_join.rb +55 -0
  120. data/lib/rx_ruby/linq/observable/from.rb +34 -0
  121. data/lib/rx_ruby/linq/observable/group_join.rb +108 -0
  122. data/lib/rx_ruby/linq/observable/if.rb +17 -0
  123. data/lib/rx_ruby/linq/observable/interval.rb +5 -0
  124. data/lib/rx_ruby/linq/observable/multicast.rb +14 -0
  125. data/lib/rx_ruby/linq/observable/of.rb +11 -0
  126. data/lib/rx_ruby/linq/observable/pairs.rb +7 -0
  127. data/lib/rx_ruby/linq/observable/pluck.rb +7 -0
  128. data/lib/rx_ruby/linq/observable/publish.rb +11 -0
  129. data/lib/rx_ruby/linq/observable/start.rb +7 -0
  130. data/lib/rx_ruby/linq/observable/time_interval.rb +15 -0
  131. data/lib/rx_ruby/linq/observable/timer.rb +26 -0
  132. data/lib/rx_ruby/linq/observable/timestamp.rb +9 -0
  133. data/lib/rx_ruby/linq/observable/to_async.rb +40 -0
  134. data/lib/rx_ruby/linq/observable/when.rb +36 -0
  135. data/lib/rx_ruby/linq/observable/while.rb +41 -0
  136. data/lib/rx_ruby/operators/aggregates.rb +611 -0
  137. data/lib/rx_ruby/operators/creation.rb +220 -0
  138. data/lib/rx_ruby/operators/multiple.rb +735 -0
  139. data/lib/rx_ruby/operators/single.rb +399 -0
  140. data/lib/rx_ruby/operators/standard_query_operators.rb +279 -0
  141. data/lib/rx_ruby/operators/synchronization.rb +47 -0
  142. data/lib/rx_ruby/operators/time.rb +120 -0
  143. data/lib/rx_ruby/subjects/async_subject.rb +161 -0
  144. data/lib/rx_ruby/subjects/behavior_subject.rb +149 -0
  145. data/lib/rx_ruby/subjects/replay_subject.rb +39 -0
  146. data/lib/rx_ruby/subjects/subject.rb +131 -0
  147. data/lib/rx_ruby/subjects/subject_extensions.rb +45 -0
  148. data/lib/rx_ruby/subscriptions/composite_subscription.rb +91 -0
  149. data/lib/rx_ruby/subscriptions/ref_count_subscription.rb +88 -0
  150. data/lib/rx_ruby/subscriptions/scheduled_subscription.rb +32 -0
  151. data/lib/rx_ruby/subscriptions/serial_subscription.rb +60 -0
  152. data/lib/rx_ruby/subscriptions/single_assignment_subscription.rb +64 -0
  153. data/lib/rx_ruby/subscriptions/subscription.rb +56 -0
  154. data/lib/rx_ruby/testing/cold_observable.rb +45 -0
  155. data/lib/rx_ruby/testing/hot_observable.rb +47 -0
  156. data/lib/rx_ruby/testing/mock_observer.rb +33 -0
  157. data/lib/rx_ruby/testing/reactive_test.rb +94 -0
  158. data/lib/rx_ruby/testing/recorded.rb +17 -0
  159. data/lib/rx_ruby/testing/test_scheduler.rb +96 -0
  160. data/lib/rx_ruby/testing/test_subscription.rb +22 -0
  161. data/lib/rx_ruby/version.rb +3 -0
  162. data/license.txt +13 -0
  163. data/readme.md +152 -0
  164. data/rx_ruby.gemspec +22 -0
  165. data/test/rx_ruby/concurrency/helpers/historical_virtual_scheduler_helper.rb +135 -0
  166. data/test/rx_ruby/concurrency/helpers/immediate_local_scheduler_helper.rb +51 -0
  167. data/test/rx_ruby/concurrency/test_async_lock.rb +56 -0
  168. data/test/rx_ruby/concurrency/test_current_thread_scheduler.rb +44 -0
  169. data/test/rx_ruby/concurrency/test_default_scheduler.rb +44 -0
  170. data/test/rx_ruby/concurrency/test_historical_scheduler.rb +18 -0
  171. data/test/rx_ruby/concurrency/test_immediate_scheduler.rb +53 -0
  172. data/test/rx_ruby/concurrency/test_local_scheduler.rb +12 -0
  173. data/test/rx_ruby/concurrency/test_periodic_scheduler.rb +53 -0
  174. data/test/rx_ruby/concurrency/test_scheduled_item.rb +50 -0
  175. data/test/rx_ruby/concurrency/test_scheduler.rb +128 -0
  176. data/test/rx_ruby/concurrency/test_virtual_time_scheduler.rb +14 -0
  177. data/test/rx_ruby/core/test_notification.rb +129 -0
  178. data/test/rx_ruby/core/test_observable_creation.rb +483 -0
  179. data/test/rx_ruby/core/test_observer.rb +634 -0
  180. data/test/rx_ruby/internal/test_priority_queue.rb +71 -0
  181. data/test/rx_ruby/subscriptions/test_composite_subscription.rb +116 -0
  182. data/test/rx_ruby/subscriptions/test_serial_subscription.rb +62 -0
  183. data/test/rx_ruby/subscriptions/test_singleassignment_subscription.rb +61 -0
  184. data/test/rx_ruby/subscriptions/test_subscription.rb +27 -0
  185. data/test/test_helper.rb +11 -0
  186. metadata +291 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d6fa8bf0df76c3cf321b5ddb7a107bf74198108a
4
+ data.tar.gz: 1b83a643dd84aa01bfbd681a37c935e3173e80cd
5
+ SHA512:
6
+ metadata.gz: 8ee23e74868ceaf02f7df3d1b9a4b13cbf821e3988f72a41ae472674996cc698a5ed94807a2822d0454f509293439e752a78363be93391673d82493d40e9f9b2
7
+ data.tar.gz: fd050f1672596f7c85f76150470466e748d19e1bcc3467722227bf6f281710bc0481ea9e57e867dacb1c9c7fc2b9906bbb94d0e9676398353b2d8dc78d589a65
data/.gitattributes ADDED
@@ -0,0 +1,22 @@
1
+ # Auto detect text files and perform LF normalization
2
+ * text=auto
3
+
4
+ # Custom for Visual Studio
5
+ *.cs diff=csharp
6
+ *.sln merge=union
7
+ *.csproj merge=union
8
+ *.vbproj merge=union
9
+ *.fsproj merge=union
10
+ *.dbproj merge=union
11
+
12
+ # Standard to msysgit
13
+ *.doc diff=astextplain
14
+ *.DOC diff=astextplain
15
+ *.docx diff=astextplain
16
+ *.DOCX diff=astextplain
17
+ *.dot diff=astextplain
18
+ *.DOT diff=astextplain
19
+ *.pdf diff=astextplain
20
+ *.PDF diff=astextplain
21
+ *.rtf diff=astextplain
22
+ *.RTF diff=astextplain
data/.gitignore ADDED
@@ -0,0 +1,173 @@
1
+ #################
2
+ ## Ruby
3
+ #################
4
+ .ruby-version
5
+ pkg/
6
+ Gemfile.lock
7
+
8
+ #################
9
+ ## Eclipse
10
+ #################
11
+
12
+ *.pydevproject
13
+ .project
14
+ .metadata
15
+ bin/
16
+ tmp/
17
+ *.tmp
18
+ *.bak
19
+ *.swp
20
+ *~.nib
21
+ local.properties
22
+ .classpath
23
+ .settings/
24
+ .loadpath
25
+
26
+ # External tool builders
27
+ .externalToolBuilders/
28
+
29
+ # Locally stored "Eclipse launch configurations"
30
+ *.launch
31
+
32
+ # CDT-specific
33
+ .cproject
34
+
35
+ # PDT-specific
36
+ .buildpath
37
+
38
+
39
+ #################
40
+ ## Visual Studio
41
+ #################
42
+
43
+ ## Ignore Visual Studio temporary files, build results, and
44
+ ## files generated by popular Visual Studio add-ons.
45
+
46
+ # User-specific files
47
+ *.suo
48
+ *.user
49
+ *.sln.docstates
50
+
51
+ # Build results
52
+ [Dd]ebug/
53
+ [Rr]elease/
54
+ *_i.c
55
+ *_p.c
56
+ *.ilk
57
+ *.meta
58
+ *.obj
59
+ *.pch
60
+ *.pdb
61
+ *.pgc
62
+ *.pgd
63
+ *.rsp
64
+ *.sbr
65
+ *.tlb
66
+ *.tli
67
+ *.tlh
68
+ *.tmp
69
+ *.vspscc
70
+ .builds
71
+ *.dotCover
72
+
73
+ ## TODO: If you have NuGet Package Restore enabled, uncomment this
74
+ #packages/
75
+
76
+ # Visual C++ cache files
77
+ ipch/
78
+ *.aps
79
+ *.ncb
80
+ *.opensdf
81
+ *.sdf
82
+
83
+ # Visual Studio profiler
84
+ *.psess
85
+ *.vsp
86
+
87
+ # ReSharper is a .NET coding add-in
88
+ _ReSharper*
89
+
90
+ # Installshield output folder
91
+ [Ee]xpress
92
+
93
+ # DocProject is a documentation generator add-in
94
+ DocProject/buildhelp/
95
+ DocProject/Help/*.HxT
96
+ DocProject/Help/*.HxC
97
+ DocProject/Help/*.hhc
98
+ DocProject/Help/*.hhk
99
+ DocProject/Help/*.hhp
100
+ DocProject/Help/Html2
101
+ DocProject/Help/html
102
+
103
+ # Click-Once directory
104
+ publish
105
+
106
+ # Others
107
+ [Bb]in
108
+ [Oo]bj
109
+ sql
110
+ TestResults
111
+ *.Cache
112
+ ClientBin
113
+ stylecop.*
114
+ ~$*
115
+ *.dbmdl
116
+ Generated_Code #added for RIA/Silverlight projects
117
+
118
+ # Backup & report files from converting an old project file to a newer
119
+ # Visual Studio version. Backup files are not needed, because we have git ;-)
120
+ _UpgradeReport_Files/
121
+ Backup*/
122
+ UpgradeLog*.XML
123
+
124
+
125
+
126
+ ############
127
+ ## Windows
128
+ ############
129
+
130
+ # Windows image file caches
131
+ Thumbs.db
132
+
133
+ # Folder config file
134
+ Desktop.ini
135
+
136
+
137
+ #############
138
+ ## Python
139
+ #############
140
+
141
+ *.py[co]
142
+
143
+ # Packages
144
+ *.egg
145
+ *.egg-info
146
+ dist
147
+ build
148
+ eggs
149
+ parts
150
+ bin
151
+ var
152
+ sdist
153
+ develop-eggs
154
+ .installed.cfg
155
+
156
+ # Installer logs
157
+ pip-log.txt
158
+
159
+ # Unit test / coverage reports
160
+ .coverage
161
+ .tox
162
+
163
+ #Translations
164
+ *.mo
165
+
166
+ #Mr Developer
167
+ .mr.developer.cfg
168
+
169
+ # Mac crap
170
+ .DS_Store
171
+
172
+ # RubyMine
173
+ .idea
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.2
6
+ - 2.2.0
7
+ - jruby-19mode # JRuby in 1.9 mode
8
+ - rbx-2.6
9
+ before_install:
10
+ - gem update bundler
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rx_ruby.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require 'rake/clean'
4
+ require 'rake/testtask'
5
+
6
+ task default: :test
7
+
8
+ Rake::TestTask.new do |task|
9
+ task.libs.unshift(File.expand_path('../test', __FILE__))
10
+ task.test_files = FileList['test/**/test*.rb']
11
+ end
@@ -0,0 +1,39 @@
1
+ require 'rx_ruby'
2
+
3
+ # Using a seed for the accumulate
4
+ source = RxRuby::Observable.range(1, 10).aggregate(1) {|acc, x|
5
+ acc * x
6
+ }
7
+
8
+ subscription = source.subscribe(
9
+ lambda {|x|
10
+ puts 'Next: ' + x.to_s
11
+ },
12
+ lambda {|err|
13
+ puts 'Error: ' + err.to_s
14
+ },
15
+ lambda {
16
+ puts 'Completed'
17
+ })
18
+
19
+ # => Next: 3628800
20
+ # => Completed
21
+
22
+ # Without a seed
23
+ source = RxRuby::Observable.range(1, 10).aggregate {|acc, x|
24
+ acc + x
25
+ }
26
+
27
+ subscription = source.subscribe(
28
+ lambda {|x|
29
+ puts 'Next: ' + x.to_s
30
+ },
31
+ lambda {|err|
32
+ puts 'Error: ' + err
33
+ },
34
+ lambda {
35
+ puts 'Completed'
36
+ })
37
+
38
+ # => Next: 55
39
+ # => Completed
data/examples/amb.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'rx_ruby'
2
+
3
+ # Using Observable sequences
4
+ source = RxRuby::Observable.amb(
5
+ RxRuby::Observable.timer(0.5).map { 'foo' },
6
+ RxRuby::Observable.timer(0.2).map { 'bar' }
7
+ )
8
+
9
+ subscription = source.subscribe(
10
+ lambda {|x|
11
+ puts 'Next: ' + x.to_s
12
+ },
13
+ lambda {|err|
14
+ puts 'Error: ' + err.to_s
15
+ },
16
+ lambda {
17
+ puts 'Completed'
18
+ })
19
+
20
+ # => Next: bar
21
+ # => Completed
22
+
23
+ while Thread.list.size > 1
24
+ (Thread.list - [Thread.current]).each &:join
25
+ end
@@ -0,0 +1,24 @@
1
+ require 'rx_ruby'
2
+
3
+ first = RxRuby::Observable.timer(0.3).map { 'first' }
4
+ second = RxRuby::Observable.timer(0.5).map { 'second' }
5
+
6
+ source = first.amb(second)
7
+
8
+ subscription = source.subscribe(
9
+ lambda {|x|
10
+ puts 'Next: ' + x.to_s
11
+ },
12
+ lambda {|err|
13
+ puts 'Error: ' + err.to_s
14
+ },
15
+ lambda {
16
+ puts 'Completed'
17
+ })
18
+
19
+ # => Next: first
20
+ # => Completed
21
+
22
+ while Thread.list.size > 1
23
+ (Thread.list - [Thread.current]).each &:join
24
+ end
data/examples/and.rb ADDED
@@ -0,0 +1,26 @@
1
+ require 'rx_ruby'
2
+
3
+ # Choice of either plan, the first set of timers or second set
4
+ source = RxRuby::Observable.when(
5
+ RxRuby::Observable.timer(0.2).and(RxRuby::Observable.timer(0.3)).then_do(lambda {|x, y| return 'first' }),
6
+ RxRuby::Observable.timer(0.4).and(RxRuby::Observable.timer(0.5)).then_do(lambda {|x, y| return 'second' }),
7
+ )
8
+
9
+ subscription = source.subscribe(
10
+ lambda {|x|
11
+ puts 'Next: ' + x.to_s
12
+ },
13
+ lambda {|err|
14
+ puts 'Error: ' + err.to_s
15
+ },
16
+ lambda {
17
+ puts 'Completed'
18
+ })
19
+
20
+ # => Next: first
21
+ # => Next: second
22
+ # => Completed
23
+
24
+ while Thread.list.size > 1
25
+ (Thread.list - [Thread.current]).each &:join
26
+ end
@@ -0,0 +1,25 @@
1
+ require 'rx_ruby'
2
+
3
+ # Create subject
4
+ subject = RxRuby::AsyncSubject.new
5
+
6
+ # Send a value
7
+ subject.on_next(42)
8
+ subject.on_completed
9
+
10
+ # Hide its type
11
+ source = subject.as_observable
12
+
13
+ subscription = source.subscribe(
14
+ lambda {|x|
15
+ puts 'Next: ' + x.to_s
16
+ },
17
+ lambda {|err|
18
+ puts 'Error: ' + err.to_s
19
+ },
20
+ lambda {
21
+ puts 'Completed'
22
+ })
23
+
24
+ # => Next: 42
25
+ # => Completed
@@ -0,0 +1,43 @@
1
+ require 'rx_ruby'
2
+
3
+ # Without a selector
4
+ source = RxRuby::Observable.range(0, 9).average
5
+
6
+ subscription = source.subscribe(
7
+ lambda {|x|
8
+ puts 'Next: ' + x.to_s
9
+ },
10
+ lambda {|err|
11
+ puts 'Error: ' + err.to_s
12
+ },
13
+ lambda {
14
+ puts 'Completed'
15
+ })
16
+
17
+ # => Next: 4
18
+ # => Completed
19
+
20
+ # With a selector
21
+ arr = [
22
+ { value: 1 },
23
+ { value: 2 },
24
+ { value: 3 }
25
+ ]
26
+
27
+ source = RxRuby::Observable.from_array(arr).average {|x|
28
+ x[:value]
29
+ }
30
+
31
+ subscription = source.subscribe(
32
+ lambda {|x|
33
+ puts 'Next: ' + x.to_s
34
+ },
35
+ lambda {|err|
36
+ puts 'Error: ' + err.to_s
37
+ },
38
+ lambda {
39
+ puts 'Completed'
40
+ })
41
+
42
+ # => Next: 2
43
+ # => Completed
@@ -0,0 +1,44 @@
1
+ require 'rx_ruby'
2
+
3
+ # Without a skip
4
+ source = RxRuby::Observable.range(1, 6)
5
+ .buffer_with_count(2)
6
+
7
+ subscription = source.subscribe(
8
+ lambda {|x|
9
+ puts 'Next: ' + x.to_s
10
+ },
11
+ lambda {|err|
12
+ puts 'Error: ' + err.to_s
13
+ },
14
+ lambda {
15
+ puts 'Completed'
16
+ })
17
+
18
+ # => Next: [1, 2]
19
+ # => Next: [3, 4]
20
+ # => Next: [5, 6]
21
+ # => Completed
22
+
23
+ # Using a skip
24
+ source = RxRuby::Observable.range(1, 6)
25
+ .buffer_with_count(2, 1)
26
+
27
+ subscription = source.subscribe(
28
+ lambda {|x|
29
+ puts 'Next: ' + x.to_s
30
+ },
31
+ lambda {|err|
32
+ puts 'Error: ' + err.to_s
33
+ },
34
+ lambda {
35
+ puts 'Completed'
36
+ })
37
+
38
+ # => Next: [1, 2]
39
+ # => Next: [2, 3]
40
+ # => Next: [3, 4]
41
+ # => Next: [4, 5]
42
+ # => Next: [5, 6]
43
+ # => Next: [6]
44
+ # => Completed