Spec-Zone.ru › Ruby 3.2

класс SyntaxSuggest::BlockExpand

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

Этот класс отвечает за взятие блока кода, который существует с большим отступом, и последующее итеративное увеличение блока таким образом, чтобы он захватил все содержимое в том же блоке отступа.

def dog
  puts "bow"
  puts "wow"
end

block = BlockExpand.new(строки_кода: строки_кода)

.call(CodeBlock.new(lines: code_lines[1]))

puts block.to_s # => выводит “bow”

puts "wow"

После того, как блок кода захватил всё при заданном уровне отступа, он расширяется, чтобы захватить окружающие отступы.

block = BlockExpand.new(строки_кода: строки_кода)

.call(block)

block.to_s # => def dog

  puts "bow"
  puts "wow"
end

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

new(code_lines:) Показать исходный код
# File lib/syntax_suggest/block_expand.rb, line 34
def initialize(code_lines:)
  @code_lines = code_lines
end

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

call(block) Показать исходный код
# File lib/syntax_suggest/block_expand.rb, line 38
def call(block)
  if (next_block = expand_neighbors(block))
    return next_block
  end

  expand_indent(block)
end
expand_indent(block) Показать исходный код
# File lib/syntax_suggest/block_expand.rb, line 46
def expand_indent(block)
  AroundBlockScan.new(code_lines: @code_lines, block: block)
    .skip(:hidden?)
    .stop_after_kw
    .scan_adjacent_indent
    .code_block
end
expand_neighbors(block) Показать исходный код
# File lib/syntax_suggest/block_expand.rb, line 54
def expand_neighbors(block)
  expanded_lines = AroundBlockScan.new(code_lines: @code_lines, block: block)
    .skip(:hidden?)
    .stop_after_kw
    .scan_neighbors
    .scan_while { |line| line.empty? } # Slurp up empties
    .lines

  if block.lines == expanded_lines
    nil
  else
    CodeBlock.new(lines: expanded_lines)
  end
end
inspect() Показать исходный код
# File lib/syntax_suggest/block_expand.rb, line 70
def inspect
  "#<SyntaxSuggest::CodeBlock:0x0000123843lol >"
end

Управляемые ошибки rspec

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