class SyntaxSuggest::Token

Value object for accessing lex values

This lex:

[IDENTIFIER(1,0)-(1,8)("describe"), 32]

Would translate into:

lex.location # => (1,0)-(1,8)
lex.type # => :IDENTIFIER
lex.token # => "describe"

Constants

KW_TYPES

Attributes

location[R]
type[R]
value[R]

Public Class Methods

new(prism_token, previous_prism_token, visitor) click to toggle source
# File lib/syntax_suggest/token.rb, line 24
def initialize(prism_token, previous_prism_token, visitor)
  @location = prism_token.location
  @type = prism_token.type
  @value = prism_token.value

  # Prism lexes `:module` as SYMBOL_BEGIN, KEYWORD_MODULE
  # https://github.com/ruby/prism/issues/3940
  symbol_content = previous_prism_token&.type == :SYMBOL_BEGIN
  @is_kw = KW_TYPES.include?(@type)
  @is_kw = false if symbol_content || visitor.endless_def_keyword_offsets.include?(@location.start_offset)
  @is_end = @type == :KEYWORD_END
end

Public Instance Methods

is_end?() click to toggle source
# File lib/syntax_suggest/token.rb, line 41
def is_end?
  @is_end
end
is_kw?() click to toggle source
# File lib/syntax_suggest/token.rb, line 45
def is_kw?
  @is_kw
end
line() click to toggle source
# File lib/syntax_suggest/token.rb, line 37
def line
  @location.start_line
end