Class: SeeingIsBelieving::Queue
- Inherits:
-
Object
- Object
- SeeingIsBelieving::Queue
- Defined in:
- lib/seeing_is_believing/queue.rb,
lib/seeing_is_believing/queue.rb
Defined Under Namespace
Classes: While
Instance Attribute Summary collapse
-
#value_generator ⇒ Object
Returns the value of attribute value_generator.
Instance Method Summary collapse
- #dequeue ⇒ Object
- #each(&block) ⇒ Object
- #empty? ⇒ Boolean
-
#initialize(&value_generator) ⇒ Queue
constructor
A new instance of Queue.
- #peek ⇒ Object
- #until(&block) ⇒ Object
- #while(&block) ⇒ Object
Constructor Details
#initialize(&value_generator) ⇒ Queue
Returns a new instance of Queue.
19 20 21 |
# File 'lib/seeing_is_believing/queue.rb', line 19 def initialize(&value_generator) self.value_generator = value_generator end |
Instance Attribute Details
#value_generator ⇒ Object
Returns the value of attribute value_generator.
17 18 19 |
# File 'lib/seeing_is_believing/queue.rb', line 17 def value_generator @value_generator end |
Instance Method Details
#dequeue ⇒ Object
23 24 25 26 |
# File 'lib/seeing_is_believing/queue.rb', line 23 def dequeue return if permanently_empty? peek.tap { @next_value = nil } end |
#each(&block) ⇒ Object
37 38 39 |
# File 'lib/seeing_is_believing/queue.rb', line 37 def each(&block) block.call dequeue until empty? end |
#empty? ⇒ Boolean
33 34 35 |
# File 'lib/seeing_is_believing/queue.rb', line 33 def empty? permanently_empty? || peek.nil? end |
#peek ⇒ Object
28 29 30 31 |
# File 'lib/seeing_is_believing/queue.rb', line 28 def peek return if permanently_empty? @next_value ||= value_generator.call.tap { |value| @permanently_empty = value.nil? } end |