class Koota::StringStream

@api private

Public Class Methods

new(input) click to toggle source
# File lib/koota/string_stream.rb, line 6
def initialize(input)
  @input = input
  @pos   = 0
end

Public Instance Methods

advance(steps = 1) click to toggle source
# File lib/koota/string_stream.rb, line 23
def advance(steps = 1)
  @pos += steps
end
empty?() click to toggle source
# File lib/koota/string_stream.rb, line 11
def empty?
  @pos >= @input.length
end
get() click to toggle source
# File lib/koota/string_stream.rb, line 19
def get
  peek.tap { advance }
end
get_until(*args) click to toggle source
# File lib/koota/string_stream.rb, line 42
def get_until(*args)
  start = @pos

  skip_until(*args)

  start == @pos ? nil : @input[start, @pos - start]
end
match?(*args) click to toggle source
# File lib/koota/string_stream.rb, line 27
def match?(*args)
  args.index(peek)
end
peek() click to toggle source
# File lib/koota/string_stream.rb, line 15
def peek
  @input[@pos]
end
skip(*args) click to toggle source
# File lib/koota/string_stream.rb, line 31
def skip(*args)
  index = match?(*args)
  return unless index

  advance(args[index].length)
end
skip_until(*args) click to toggle source
# File lib/koota/string_stream.rb, line 38
def skip_until(*args)
  advance until empty? || match?(*args)
end