Class: Spurline::Streaming::StreamEnumerator
- Inherits:
-
Object
- Object
- Spurline::Streaming::StreamEnumerator
- Includes:
- Enumerable
- Defined in:
- lib/spurline/streaming/stream_enumerator.rb
Overview
Wraps a block-based streaming interface into a Ruby Enumerator. This allows both block and enumerator usage patterns (ADR-001):
agent.run("hello") { |chunk| print chunk.text }
agent.run("hello").each { |chunk| print chunk.text }
Instance Method Summary collapse
- #each(&consumer) ⇒ Object
-
#initialize(&producer) ⇒ StreamEnumerator
constructor
A new instance of StreamEnumerator.
Constructor Details
#initialize(&producer) ⇒ StreamEnumerator
Returns a new instance of StreamEnumerator.
14 15 16 |
# File 'lib/spurline/streaming/stream_enumerator.rb', line 14 def initialize(&producer) @producer = producer end |
Instance Method Details
#each(&consumer) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/spurline/streaming/stream_enumerator.rb', line 18 def each(&consumer) if consumer @producer.call(consumer) else ::Enumerator.new do |yielder| @producer.call(proc { |chunk| yielder << chunk }) end end end |