class Attentive::Cursor

Constants

EOF

Attributes

message[R]
pos[R]
tokens[R]

Public Class Methods

new(message, pos=0) click to toggle source
# File lib/attentive/cursor.rb, line 5
def initialize(message, pos=0)
  @message = message
  @tokens = message.respond_to?(:tokens) ? message.tokens : message
  @pos = pos
end

Public Instance Methods

adv(n=1)
Alias for: advance
advance(n=1) click to toggle source
# File lib/attentive/cursor.rb, line 37
def advance(n=1)
  @pos += n
  self
end
Also aliased as: adv
eof?() click to toggle source
# File lib/attentive/cursor.rb, line 43
def eof?
  @pos == @tokens.length
end
inspect() click to toggle source
# File lib/attentive/cursor.rb, line 29
def inspect
  "<Cursor \"#{(tokens[0...pos] || []).join.inspect[1...-1]}\e[7m#{tokens[pos].to_s.inspect[1...-1]}\e[0m#{(tokens[(pos + 1)..-1] || []).join.inspect[1...-1]}\">"
end
new_from_here() click to toggle source
# File lib/attentive/cursor.rb, line 21
def new_from_here
  self.class.new(tokens[pos..-1])
end
offset() click to toggle source
# File lib/attentive/cursor.rb, line 33
def offset
  peek.begin
end
peek() click to toggle source
# File lib/attentive/cursor.rb, line 11
def peek
  tokens[pos] || EOF
end
pop() click to toggle source
# File lib/attentive/cursor.rb, line 15
def pop
  peek.tap do
    advance
  end
end
to_s() click to toggle source
# File lib/attentive/cursor.rb, line 25
def to_s
  tokens[pos..-1].join
end