Class: SyntaxSuggest::Capture::FallingIndentLines
- Inherits:
-
Object
- Object
- SyntaxSuggest::Capture::FallingIndentLines
- Defined in:
- lib/syntax_suggest/capture/falling_indent_lines.rb
Overview
Shows the context around code provided by “falling” indentation
If this is the original code lines:
class OH
def hello
it "foo" do
end
end
And this is the line that is captured
it "foo" do
It will yield its surrounding context:
class OH
def hello
end
end
Example:
FallingIndentLines.new(
block: block,
code_lines: @code_lines
).call do |line|
@lines_to_output << line
end
Instance Method Summary collapse
- #call(&yieldable) ⇒ Object
-
#initialize(code_lines:, block:) ⇒ FallingIndentLines
constructor
A new instance of FallingIndentLines.
Constructor Details
#initialize(code_lines:, block:) ⇒ FallingIndentLines
Returns a new instance of FallingIndentLines.
36 37 38 39 40 |
# File 'lib/syntax_suggest/capture/falling_indent_lines.rb', line 36 def initialize(code_lines:, block:) @lines = nil @scanner = ScanHistory.new(code_lines: code_lines, block: block) @original_indent = block.current_indent end |
Instance Method Details
#call(&yieldable) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/syntax_suggest/capture/falling_indent_lines.rb', line 42 def call(&yieldable) last_indent_up = @original_indent last_indent_down = @original_indent @scanner.commit_if_changed @scanner.scan( up: ->(line, _, _) { next true if line.empty? if line.indent < last_indent_up yieldable.call(line) last_indent_up = line.indent end true }, down: ->(line, _, _) { next true if line.empty? if line.indent < last_indent_down yieldable.call(line) last_indent_down = line.indent end true } ) @scanner.stash_changes end |