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