From c7393ab89be7dc3a5fcffa24113713fee3932918 Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 6 Nov 2016 02:49:49 +0000 Subject: irb.rb: IRB::Irb#run * lib/irb.rb (IRB::Irb#run): split from IRB.start. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/irb.rb | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/irb.rb b/lib/irb.rb index 92b79b3301..869f5ad894 100644 --- a/lib/irb.rb +++ b/lib/irb.rb @@ -382,21 +382,7 @@ module IRB else irb = Irb.new end - - @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 + irb.run(@CONF) end # Calls each event hook of IRB.conf[:AT_EXIT] when the current session quits. @@ -430,6 +416,24 @@ module IRB @scanner = RubyLex.new @scanner.exception_on_syntax_error = false end + + def run(conf = IRB.conf) + conf[:IRB_RC].call(context) if conf[:IRB_RC] + conf[:MAIN_CONTEXT] = context + + trap("SIGINT") do + signal_handle + end + + begin + catch(:IRB_EXIT) do + eval_input + end + ensure + conf[:AT_EXIT].each{|hook| hook.call} + end + end + # Returns the current context of this irb session attr_reader :context # The lexer used by this irb session -- cgit v1.2.3