класс 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
Публичные методы класса
# File lib/syntax_suggest/block_expand.rb, line 34 def initialize(code_lines:) @code_lines = code_lines end
Публичные методы экземпляра
# 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 # 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 # 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 # 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.