Class: Attentive::Cursor

Inherits:
Object
  • Object
show all
Defined in:
lib/attentive/cursor.rb

Defined Under Namespace

Classes: Eof

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message, pos = 0) ⇒ Cursor

Returns a new instance of Cursor.



5
6
7
8
9
# 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

Instance Attribute Details

#messageObject (readonly)

Returns the value of attribute message.



3
4
5
# File 'lib/attentive/cursor.rb', line 3

def message
  @message
end

#posObject (readonly)

Returns the value of attribute pos.



3
4
5
# File 'lib/attentive/cursor.rb', line 3

def pos
  @pos
end

#tokensObject (readonly)

Returns the value of attribute tokens.



3
4
5
# File 'lib/attentive/cursor.rb', line 3

def tokens
  @tokens
end

Instance Method Details

#advance(n = 1) ⇒ Object Also known as: adv



37
38
39
40
# File 'lib/attentive/cursor.rb', line 37

def advance(n=1)
  @pos += n
  self
end

#eof?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/attentive/cursor.rb', line 43

def eof?
  @pos == @tokens.length
end

#inspectObject



29
30
31
# 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_hereObject



21
22
23
# File 'lib/attentive/cursor.rb', line 21

def new_from_here
  self.class.new(tokens[pos..-1])
end

#offsetObject



33
34
35
# File 'lib/attentive/cursor.rb', line 33

def offset
  peek.begin
end

#peekObject



11
12
13
# File 'lib/attentive/cursor.rb', line 11

def peek
  tokens[pos] || EOF
end

#popObject



15
16
17
18
19
# File 'lib/attentive/cursor.rb', line 15

def pop
  peek.tap do
    advance
  end
end

#to_sObject



25
26
27
# File 'lib/attentive/cursor.rb', line 25

def to_s
  tokens[pos..-1].join
end