Spec-Zone.ru › Ruby 3.3

класс SyntaxSuggest::LexValue

Родитель:
Объект

Объект значения для доступа к значениям лексем

Эта лексема:

[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

Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API