类 SyntaxSuggest::LexValue
用于访问词法值的 Value 对象
这个词法
[1, 0], :on_ident, "describe", CMDARG
将被翻译成
lex.line # => 1 lex.type # => :on_indent lex.token # => "describe"
属性
line[R]
state[R]
token[R]
type[R]
公共类方法
new(line, type, token, state, last_lex = nil) 点击切换源代码
# 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
公共实例方法
expr_beg?() 点击切换源代码
# File lib/syntax_suggest/lex_value.rb, line 62 def expr_beg? state.anybits?(Ripper::EXPR_BEG) end
expr_label?() 点击切换源代码
# File lib/syntax_suggest/lex_value.rb, line 66 def expr_label? state.allbits?(Ripper::EXPR_LABEL) end
fname?() 点击切换源代码
# File lib/syntax_suggest/lex_value.rb, line 46 def fname? state.allbits?(Ripper::EXPR_FNAME) end
ignore_newline?() 点击切换源代码
# File lib/syntax_suggest/lex_value.rb, line 50 def ignore_newline? type == :on_ignored_nl end
is_end?() 点击切换源代码
# File lib/syntax_suggest/lex_value.rb, line 54 def is_end? @is_end end
is_kw?() 点击切换源代码
# File lib/syntax_suggest/lex_value.rb, line 58 def is_kw? @is_kw end
私有实例方法
set_kw_end(last_lex) 点击切换源代码
# 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