Class: Prism::Translation::Ripper::Lexer::Elem

Inherits:
Object
  • Object
show all
Defined in:
lib/prism/translation/ripper/lexer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pos, event, tok, state, message = nil) ⇒ Elem

Returns a new instance of Elem.



53
54
55
56
57
58
59
# File 'lib/prism/translation/ripper/lexer.rb', line 53

def initialize(pos, event, tok, state, message = nil)
  @pos = pos
  @event = event
  @tok = tok
  @state = State.cached(state)
  @message = message
end

Instance Attribute Details

#eventObject

Returns the value of attribute event.



51
52
53
# File 'lib/prism/translation/ripper/lexer.rb', line 51

def event
  @event
end

#messageObject

Returns the value of attribute message.



51
52
53
# File 'lib/prism/translation/ripper/lexer.rb', line 51

def message
  @message
end

#posObject

Returns the value of attribute pos.



51
52
53
# File 'lib/prism/translation/ripper/lexer.rb', line 51

def pos
  @pos
end

#stateObject

Returns the value of attribute state.



51
52
53
# File 'lib/prism/translation/ripper/lexer.rb', line 51

def state
  @state
end

#tokObject

Returns the value of attribute tok.



51
52
53
# File 'lib/prism/translation/ripper/lexer.rb', line 51

def tok
  @tok
end

Instance Method Details

#[](index) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/prism/translation/ripper/lexer.rb', line 61

def [](index)
  case index
  when 0, :pos
    @pos
  when 1, :event
    @event
  when 2, :tok
    @tok
  when 3, :state
    @state
  when 4, :message
    @message
  else
    nil
  end
end

#inspectObject Also known as: to_s



78
79
80
# File 'lib/prism/translation/ripper/lexer.rb', line 78

def inspect
  "#<#{self.class}: #{event}@#{pos[0]}:#{pos[1]}:#{state}: #{tok.inspect}#{": " if message}#{message}>"
end

#pretty_print(q) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/prism/translation/ripper/lexer.rb', line 84

def pretty_print(q)
  q.group(2, "#<#{self.class}:", ">") {
    q.breakable
    q.text("#{event}@#{pos[0]}:#{pos[1]}")
    q.breakable
    state.pretty_print(q)
    q.breakable
    q.text("token: ")
    tok.pretty_print(q)
    if message
      q.breakable
      q.text("message: ")
      q.text(message)
    end
  }
end

#to_aObject



101
102
103
104
105
106
107
# File 'lib/prism/translation/ripper/lexer.rb', line 101

def to_a
  if @message
    [@pos, @event, @tok, @state, @message]
  else
    [@pos, @event, @tok, @state]
  end
end