Class: Guileless::InputStream

Inherits:
Object
  • Object
show all
Defined in:
lib/guileless/input_stream.rb

Instance Method Summary collapse

Constructor Details

#initialize(input) ⇒ InputStream

Returns a new instance of InputStream.



3
4
5
# File 'lib/guileless/input_stream.rb', line 3

def initialize(input)
  @buffer = input.chars.to_a
end

Instance Method Details

#discard(count = 1) ⇒ Object



19
20
21
# File 'lib/guileless/input_stream.rb', line 19

def discard(count=1)
  count.times { @buffer.shift }
end

#empty?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/guileless/input_stream.rb', line 11

def empty?
  @buffer.length == 0
end

#fetchObject



15
16
17
# File 'lib/guileless/input_stream.rb', line 15

def fetch
  @buffer.shift
end

#peek?(patterns) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
33
34
35
36
37
# File 'lib/guileless/input_stream.rb', line 27

def peek?(patterns)
  match = false
  Array(patterns).each do |pattern|
    if pattern.kind_of?(Regexp)
      match = true if self.to_s =~ pattern
    elsif pattern.kind_of?(String)
      match = true if self.to_s[0...(pattern.length)] == pattern
    end
  end
  match
end

#reinject(char) ⇒ Object



7
8
9
# File 'lib/guileless/input_stream.rb', line 7

def reinject(char)
  @buffer.unshift(char)
end

#strip_whitespaceObject



23
24
25
# File 'lib/guileless/input_stream.rb', line 23

def strip_whitespace
  @buffer.shift while @buffer.first == "\n"
end

#to_sObject



39
40
41
# File 'lib/guileless/input_stream.rb', line 39

def to_s
  @buffer.join
end