Class: Rivulet::Stream
- Inherits:
-
Object
show all
- Defined in:
- lib/rivulet/stream.rb
Instance Method Summary
collapse
Constructor Details
#initialize(source) ⇒ Stream
Returns a new instance of Stream.
5
6
7
|
# File 'lib/rivulet/stream.rb', line 5
def initialize(source)
@source = source
end
|
Instance Method Details
#iterate_windows(mode:, size: nil, rule: nil, step: 1, &block) ⇒ Object
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/rivulet/stream.rb', line 30
def iterate_windows(mode:, size: nil, rule: nil, step: 1, &block)
case mode
when :fixed then iterate_fixed(size: size, step: step, &block)
when :variable then iterate_variable(rule: rule, &block)
when :satisfied then iterate_satisfied(rule: rule, &block)
else raise ArgumentError, "unknown mode: #{mode}"
end
end
|
#max_window(&rule) ⇒ Object
21
22
23
|
# File 'lib/rivulet/stream.rb', line 21
def max_window(&rule)
WindowBuilder.new(stream: self, mode: :variable, rule: rule)
end
|
#min_window(&goal) ⇒ Object
25
26
27
|
# File 'lib/rivulet/stream.rb', line 25
def min_window(&goal)
WindowBuilder.new(stream: self, mode: :satisfied, rule: goal)
end
|
#tumbling(size, &block) ⇒ Object
17
18
19
|
# File 'lib/rivulet/stream.rb', line 17
def tumbling(size, &block)
windows(size, step: size, &block)
end
|
#windows(size, step: 1, &block) ⇒ Object
9
10
11
12
13
14
15
|
# File 'lib/rivulet/stream.rb', line 9
def windows(size, step: 1, &block)
raise ArgumentError, "size must be positive" unless size.positive?
raise ArgumentError, "step must be positive" unless step.positive?
builder = WindowBuilder.new(stream: self, mode: :fixed, size: size, step: step)
block ? builder.each_window(&block) : builder
end
|