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)
click to toggle 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?()
click to toggle source
# File lib/syntax_suggest/lex_value.rb, line 62 def expr_beg? state.anybits?(Ripper::EXPR_BEG) end
expr_label?()
click to toggle source
# File lib/syntax_suggest/lex_value.rb, line 66 def expr_label? state.allbits?(Ripper::EXPR_LABEL) end
fname?()
click to toggle source
# File lib/syntax_suggest/lex_value.rb, line 46 def fname? state.allbits?(Ripper::EXPR_FNAME) end
ignore_newline?()
click to toggle source
# File lib/syntax_suggest/lex_value.rb, line 50 def ignore_newline? type == :on_ignored_nl end
is_end?()
click to toggle source
# File lib/syntax_suggest/lex_value.rb, line 54 def is_end? @is_end end
is_kw?()
click to toggle source
# File lib/syntax_suggest/lex_value.rb, line 58 def is_kw? @is_kw end
Private Instance Methods
set_kw_end(last_lex)
click to toggle 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