From e0db3c5bd28322689908e760edf0ebf1408934b9 Mon Sep 17 00:00:00 2001 From: Oskar Eichler Date: Fri, 28 Aug 2026 02:15:02 +0300 Subject: [PATCH 1/2] Recognize a complete expression in explicitly consumed lines --- lib/method_source/code_helpers.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/method_source/code_helpers.rb b/lib/method_source/code_helpers.rb index 4185c18..9eb8cdd 100644 --- a/lib/method_source/code_helpers.rb +++ b/lib/method_source/code_helpers.rb @@ -92,6 +92,8 @@ def complete_expression?(str) def extract_first_expression(lines, consume=0, &block) code = consume.zero? ? +"" : lines.slice!(0..(consume - 1)).join + return code if !code.empty? && complete_expression?(block ? block.call(code) : code) + lines.each do |v| code << v return code if complete_expression?(block ? block.call(code) : code) From e2c25b44e39486a8a0f79c5a644e5ab8b9ed3bec Mon Sep 17 00:00:00 2001 From: Oskar Eichler <62393985+OskarEichler@users.noreply.github.com> Date: Fri, 28 Aug 2026 15:35:00 +0300 Subject: [PATCH 2/2] Add regression coverage for recognize a complete expression in explicitly consumed lines --- spec/method_source/code_helpers_spec.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/method_source/code_helpers_spec.rb b/spec/method_source/code_helpers_spec.rb index 287ff89..5efba8f 100644 --- a/spec/method_source/code_helpers_spec.rb +++ b/spec/method_source/code_helpers_spec.rb @@ -5,6 +5,10 @@ @tester = Object.new.extend(MethodSource::CodeHelpers) end + it "returns a complete explicitly consumed prefix" do + expect(@tester.expression_at("7\n9\n", 1, consume: 1)).to eq("7\n") + end + [ ["p = '", "'"], ["def", "a", "(); end"],