| 
									
										
										
										
											2020-10-10 14:16:11 +02:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  | require "irb" | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-16 02:53:26 +01:00
										 |  |  | # @private | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | module IRB | 
					
						
							| 
									
										
										
										
											2020-09-20 05:57:37 +02:00
										 |  |  |   def self.start_within(binding) | 
					
						
							|  |  |  |     unless @setup_done | 
					
						
							|  |  |  |       setup(nil, argv: []) | 
					
						
							|  |  |  |       @setup_done = true | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-20 05:57:37 +02:00
										 |  |  |     workspace = WorkSpace.new(binding) | 
					
						
							|  |  |  |     irb = Irb.new(workspace) | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-20 05:57:37 +02:00
										 |  |  |     @CONF[:IRB_RC]&.call(irb.context) | 
					
						
							|  |  |  |     @CONF[:MAIN_CONTEXT] = irb.context | 
					
						
							| 
									
										
										
										
											2015-03-10 23:25:31 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-13 17:41:35 +01:00
										 |  |  |     prev_trap = trap("SIGINT") do | 
					
						
							| 
									
										
										
										
											2020-09-20 05:57:37 +02:00
										 |  |  |       irb.signal_handle | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-20 05:57:37 +02:00
										 |  |  |     begin | 
					
						
							|  |  |  |       catch(:IRB_EXIT) do | 
					
						
							|  |  |  |         irb.eval_input | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2020-09-20 05:57:37 +02:00
										 |  |  |     ensure | 
					
						
							| 
									
										
										
										
											2021-04-13 17:41:35 +01:00
										 |  |  |       trap("SIGINT", prev_trap) | 
					
						
							| 
									
										
										
										
											2020-09-20 05:57:37 +02:00
										 |  |  |       irb_at_exit | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2020-09-20 05:57:37 +02:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | end |