Class: DeadEnd::BlockExpand
- Inherits:
-
Object
- Object
- DeadEnd::BlockExpand
- Defined in:
- lib/dead_end/block_expand.rb
Overview
This class is responsible for taking a code block that exists at a far indentaion and then iteratively increasing the block so that it captures everything within the same indentation block.
def dog
puts "bow"
puts "wow"
end
block = BlockExpand.new(code_lines: code_lines)
.call(CodeBlock.new(lines: code_lines[1]))
puts block.to_s # => puts “bow”
puts "wow"
Once a code block has captured everything at a given indentation level then it will expand to capture surrounding indentation.
block = BlockExpand.new(code_lines: code_lines)
.call(block)
block.to_s # => def dog
puts "bow"
puts "wow"
end
Instance Method Summary collapse
- #call(block) ⇒ Object
- #expand_indent(block) ⇒ Object
- #expand_neighbors(block) ⇒ Object
-
#initialize(code_lines:) ⇒ BlockExpand
constructor
A new instance of BlockExpand.
-
#inspect ⇒ Object
Managable rspec errors.
Constructor Details
#initialize(code_lines:) ⇒ BlockExpand
Returns a new instance of BlockExpand.
34 35 36 |
# File 'lib/dead_end/block_expand.rb', line 34 def initialize(code_lines:) @code_lines = code_lines end |
Instance Method Details
#call(block) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/dead_end/block_expand.rb', line 38 def call(block) if (next_block = (block)) return next_block end (block) end |
#expand_indent(block) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/dead_end/block_expand.rb', line 46 def (block) AroundBlockScan.new(code_lines: @code_lines, block: block) .skip(:hidden?) .stop_after_kw .scan_adjacent_indent .code_block end |
#expand_neighbors(block) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/dead_end/block_expand.rb', line 54 def (block) = 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 == nil else CodeBlock.new(lines: ) end end |
#inspect ⇒ Object
Managable rspec errors
70 71 72 |
# File 'lib/dead_end/block_expand.rb', line 70 def inspect "#<DeadEnd::CodeBlock:0x0000123843lol >" end |