summaryrefslogtreecommitdiff
path: root/lib/pry/commands/edit/exception_patcher.rb
blob: 07e13bc93925991289f481afb6935c30d1c454c5 (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
class Pry
  class Command::Edit
    class ExceptionPatcher
      attr_accessor :_pry_
      attr_accessor :state
      attr_accessor :file_and_line

      def initialize(_pry_, state, exception_file_and_line)
        @_pry_ = _pry_
        @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_).edit_tempfile_with_content(lines)
        _pry_.evaluate_ruby source
        state.dynamical_ex_file = source.split("\n")
      end
    end
  end
end