🔍

No recent searches

# class SyntaxSuggest::LexValue

Value object for accessing lex values

This lex:

    [1, 0], :on_ident, "describe", CMDARG

Would translate into:

    lex.line # => 1
    lex.type # => :on_indent
    lex.token # => "describe"

### Attributes

line [R]
state [R]
token [R]
type [R]

### Public Class Methods

new (line, type, token, state, last_lex = nil)
Source

    # File lib/syntax_suggest/lex_value.rb, line 18
    def initialize(line, type, token, state, last_lex = nil)
      @line = line
      @type = type
      @token = token
      @state = state

      set_kw_end(last_lex)
    end

### Public Instance Methods

expr_beg? ()
Source

    # File lib/syntax_suggest/lex_value.rb, line 62
    def expr_beg?
      state.anybits?(Ripper::EXPR_BEG)
    end

expr_label? ()
Source

    # File lib/syntax_suggest/lex_value.rb, line 66
    def expr_label?
      state.allbits?(Ripper::EXPR_LABEL)
    end

fname? ()
Source

    # File lib/syntax_suggest/lex_value.rb, line 46
    def fname?
      state.allbits?(Ripper::EXPR_FNAME)
    end

ignore_newline? ()
Source

    # File lib/syntax_suggest/lex_value.rb, line 50
    def ignore_newline?
      type == :on_ignored_nl
    end

is_end? ()
Source

    # File lib/syntax_suggest/lex_value.rb, line 54
    def is_end?
      @is_end
    end

is_kw? ()
Source

    # File lib/syntax_suggest/lex_value.rb, line 58
    def is_kw?
      @is_kw
    end

### Private Instance Methods

set_kw_end (last_lex)
Source

    # File lib/syntax_suggest/lex_value.rb, line 27
            def set_kw_end(last_lex)
      @is_end = false
      @is_kw = false
      return if type != :on_kw

      return if last_lex && last_lex.fname? # https://github.com/ruby/ruby/commit/776759e300e4659bb7468e2b97c8c2d4359a2953

      case token
      when "if", "unless", "while", "until"
        # Only count if/unless when it's not a "trailing" if/unless
        # https://github.com/ruby/ruby/blob/06b44f819eb7b5ede1ff69cecb25682b56a1d60c/lib/irb/ruby-lex.rb#L374-L375
        @is_kw = true unless expr_label?
      when "def", "case", "for", "begin", "class", "module", "do"
        @is_kw = true
      when "end"
        @is_end = true
      end
    end