summaryrefslogtreecommitdiff
path: root/lib/pry/commands/edit/exception_patcher.rb
blob: 6465d5971596f1ccc9fccff0d698935490b48e21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# frozen_string_literal: true

class Pry
  class Command
    class Edit
      class ExceptionPatcher
        attr_accessor :pry_instance
        attr_accessor :state
        attr_accessor :file_and_line

        def initialize(pry_instance, state, exception_file_and_line)
          @pry_instance = pry_instance
          @state = state
          @file_and_line = exception_file_and_line
        end

        # perform the patch
        def perform_patch
          file_name, = file_and_line
          lines = state.dynamical_ex_file || File.read(file_name)

          source = Pry::Editor.new(pry_instance).edit_tempfile_with_content(lines)
          pry_instance.evaluate_ruby source
          state.dynamical_ex_file = source.split("\n")
        end
      end
    end
  end
end