aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/debrew/irb.rb
blob: 8d81558b10c2486fb93949496d1778c8af486d09 (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
30
31
32
33
34
35
require 'irb'

module IRB
  @setup_done = false

  extend Module.new {
    def parse_opts
    end

    def start_within(binding)
      unless @setup_done
        setup(nil)
        @setup_done = true
      end

      workspace = WorkSpace.new(binding)
      irb = Irb.new(workspace)

      @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
      @CONF[:MAIN_CONTEXT] = irb.context

      trap("SIGINT") do
        irb.signal_handle
      end

      begin
        catch(:IRB_EXIT) do
          irb.eval_input
        end
      ensure
        irb_at_exit
      end
    end
  }
end