class Stream::CollectionStream

A CollectionStream can be used as an external iterator for each interger-indexed collection. The state of the iterator is stored in instance variable @pos.

A CollectionStream for an array is created by the method Array#create_stream.

Attributes

pos[R]

Public Class Methods

new(seq) click to toggle source

Creates a new CollectionStream for the indexable sequence seq.

    # File lib/stream.rb
195 def initialize(seq)
196   @seq = seq
197   set_to_begin
198 end

Public Instance Methods

at_beginning?() click to toggle source
    # File lib/stream.rb
204 def at_beginning?
205   @pos < 0
206 end
at_end?() click to toggle source
    # File lib/stream.rb
200 def at_end?
201   @pos + 1 >= @seq.size
202 end
basic_backward() click to toggle source
    # File lib/stream.rb
223 def basic_backward
224   r = @seq[@pos]
225   @pos -= 1; r
226 end
basic_forward() click to toggle source
    # File lib/stream.rb
218 def basic_forward
219   @pos += 1
220   @seq[@pos]
221 end
set_to_begin() click to toggle source

positioning

    # File lib/stream.rb
210 def set_to_begin
211   @pos = -1
212 end
set_to_end() click to toggle source
    # File lib/stream.rb
214 def set_to_end
215   @pos = @seq.size - 1
216 end

Protected Instance Methods

basic_current() click to toggle source

basic_current and basic_peek can be implemented more efficiently than in superclass

    # File lib/stream.rb
232 def basic_current
233   @seq[@pos]
234 end
basic_peek() click to toggle source
    # File lib/stream.rb
236 def basic_peek
237   @seq[@pos + 1]
238 end