Class: Attentive::Cursor
- Inherits:
-
Object
- Object
- Attentive::Cursor
- Defined in:
- lib/attentive/cursor.rb
Defined Under Namespace
Classes: Eof
Instance Attribute Summary collapse
-
#message ⇒ Object
readonly
Returns the value of attribute message.
-
#pos ⇒ Object
readonly
Returns the value of attribute pos.
-
#tokens ⇒ Object
readonly
Returns the value of attribute tokens.
Instance Method Summary collapse
- #advance(n = 1) ⇒ Object (also: #adv)
- #eof? ⇒ Boolean
-
#initialize(message, pos = 0) ⇒ Cursor
constructor
A new instance of Cursor.
- #inspect ⇒ Object
- #new_from_here ⇒ Object
- #offset ⇒ Object
- #peek ⇒ Object
- #pop ⇒ Object
- #to_s ⇒ Object
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(, pos=0) @message = @tokens = .respond_to?(:tokens) ? .tokens : @pos = pos end |
Instance Attribute Details
#message ⇒ Object (readonly)
Returns the value of attribute message.
3 4 5 |
# File 'lib/attentive/cursor.rb', line 3 def @message end |
#pos ⇒ Object (readonly)
Returns the value of attribute pos.
3 4 5 |
# File 'lib/attentive/cursor.rb', line 3 def pos @pos end |
#tokens ⇒ Object (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
43 44 45 |
# File 'lib/attentive/cursor.rb', line 43 def eof? @pos == @tokens.length end |
#inspect ⇒ Object
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_here ⇒ Object
21 22 23 |
# File 'lib/attentive/cursor.rb', line 21 def new_from_here self.class.new(tokens[pos..-1]) end |
#offset ⇒ Object
33 34 35 |
# File 'lib/attentive/cursor.rb', line 33 def offset peek.begin end |
#peek ⇒ Object
11 12 13 |
# File 'lib/attentive/cursor.rb', line 11 def peek tokens[pos] || EOF end |
#pop ⇒ Object
15 16 17 18 19 |
# File 'lib/attentive/cursor.rb', line 15 def pop peek.tap do advance end end |
#to_s ⇒ Object
25 26 27 |
# File 'lib/attentive/cursor.rb', line 25 def to_s tokens[pos..-1].join end |