| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  | require "irb" | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | 
 | 
					
						
							|  |  |  | module IRB | 
					
						
							|  |  |  |   @setup_done = false | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-10 23:25:31 -04:00
										 |  |  |   extend Module.new { | 
					
						
							|  |  |  |     def parse_opts | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-10 23:25:31 -04:00
										 |  |  |     def start_within(binding) | 
					
						
							|  |  |  |       unless @setup_done | 
					
						
							|  |  |  |         setup(nil) | 
					
						
							|  |  |  |         @setup_done = true | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-10 23:25:31 -04:00
										 |  |  |       workspace = WorkSpace.new(binding) | 
					
						
							|  |  |  |       irb = Irb.new(workspace) | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-10 23:25:31 -04:00
										 |  |  |       @CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC] | 
					
						
							|  |  |  |       @CONF[:MAIN_CONTEXT] = irb.context | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       trap("SIGINT") do | 
					
						
							|  |  |  |         irb.signal_handle | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-10 23:25:31 -04:00
										 |  |  |       begin | 
					
						
							|  |  |  |         catch(:IRB_EXIT) do | 
					
						
							|  |  |  |           irb.eval_input | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       ensure | 
					
						
							|  |  |  |         irb_at_exit | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2015-03-10 23:25:31 -04:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2013-02-06 18:46:36 -06:00
										 |  |  | end |