Class: SyntaxSuggest::Token
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | lib/syntax_suggest/token.rb |
Overview
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"
Constant Summary
-
KW_TYPES =
private
# File 'lib/syntax_suggest/token.rb', line 18%i[ KEYWORD_IF KEYWORD_UNLESS KEYWORD_WHILE KEYWORD_UNTIL KEYWORD_DEF KEYWORD_CASE KEYWORD_FOR KEYWORD_BEGIN KEYWORD_CLASS KEYWORD_MODULE KEYWORD_DO KEYWORD_DO_LOOP ].to_set.freeze
Class Method Summary
Instance Attribute Summary
- #is_end? ⇒ Boolean readonly
- #is_kw? ⇒ Boolean readonly
- #location readonly
- #type readonly
- #value readonly
Instance Method Summary
Constructor Details
.new(prism_token, previous_prism_token, visitor) ⇒ Token
# 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
Instance Attribute Details
#is_end? ⇒ Boolean (readonly)
[ GitHub ]
# File 'lib/syntax_suggest/token.rb', line 41
def is_end? @is_end end
#is_kw? ⇒ Boolean (readonly)
[ GitHub ]
# File 'lib/syntax_suggest/token.rb', line 45
def is_kw? @is_kw end
#location (readonly)
[ GitHub ]#type (readonly)
[ GitHub ]#value (readonly)
[ GitHub ]Instance Method Details
#line
[ GitHub ]# File 'lib/syntax_suggest/token.rb', line 37
def line @location.start_line end