blob: f974037820a9dc18fe96aca3af46fffe8d540113 (
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
  |