Spec-Zone.ru › Ruby 3.3

класс SyntaxSuggest::CodeBlock

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

Несколько строк образуют один CodeBlock

Исходный код состоит из нескольких CodeBlock.

Пример:

code_block.to_s # =>
  #   def foo
  #     puts "foo"
  #   end

code_block.valid? # => true
code_block.in_valid? # => false

Константы

UNSET

Атрибуты

ends_at[R]
lines[R]
starts_at[R]

Публичные методы класса

new(lines: []) Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 23
def initialize(lines: [])
  @lines = Array(lines)
  @valid = UNSET
  @deleted = false
  @starts_at = @lines.first.number
  @ends_at = @lines.last.number
end

Публичные методы экземпляра

<=>(other) Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 59
def <=>(other)
  out = current_indent <=> other.current_indent
  return out if out != 0

  # Stable sort
  starts_at <=> other.starts_at
end

Используется для упорядочивания пограничных элементов; поиск ведется от наибольшего отступа к наименьшему. Это позволяет заполнить массив несколькими блоками кода, а затем вызвать ‘sort!` без указания критериев сортировки

current_indent() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 67
def current_indent
  @current_indent ||= lines.select(&:not_empty?).map(&:indent).min || 0
end
delete() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 31
def delete
  @deleted = true
end
deleted?() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 35
def deleted?
  @deleted
end
hidden?() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 51
def hidden?
  @lines.all?(&:hidden?)
end
invalid?() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 71
def invalid?
  !valid?
end
is_end?() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 47
def is_end?
  to_s.strip == "end"
end
mark_invisible() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 43
def mark_invisible
  @lines.map(&:mark_invisible)
end
to_s() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 96
def to_s
  @lines.join
end
valid?() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 75
def valid?
  if @valid == UNSET
    # Performance optimization
    #
    # If all the lines were previously hidden
    # and we expand to capture additional empty
    # lines then the result cannot be invalid
    #
    # That means there's no reason to re-check all
    # lines with the parser (which is expensive).
    # Benchmark in commit message
    @valid = if lines.all? { |l| l.hidden? || l.empty? }
      true
    else
      SyntaxSuggest.valid?(lines.map(&:original).join)
    end
  else
    @valid
  end
end
visible_lines() Показать исходный код
# File lib/syntax_suggest/code_block.rb, line 39
def visible_lines
  @lines.select(&:visible?).select(&:not_empty?)
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