2015-02-05 113 views
3

是否可以攔截IRB輸入?特別是對於#Fixnum類?如何攔截IRB輸入?

例子:

5 
=> 5 

我需要做的是:(僞代碼)

if IRB.input.is_a?(Fixnum) 
    some_method(IRB.input) # some_method(5) 
end 

回答

0

看這個file。 你可以找到厄貝沙坦#eval_input方法和補一補:

# code before 
@scanner.set_input(@context.io) do 
    signal_status(:IN_INPUT) do 
    if l = @context.io.gets 
     if l.match(/^\d+$/) 
     puts 'Integer found!' 
     end 
     print l if @context.verbose? 
    else 
     if @context.ignore_eof? and @context.io.readable_after_eof? 
     l = "\n" 
     if @context.verbose? 
      printf "Use \"exit\" to leave %s\n", @context.ap_name 
     end 
     else 
     print "\n" 
     end 
    end 
    l 
    end 
end 
# code after 

厄貝沙坦輸出例如:

[email protected]:~$ irb 
2.1.5 :001 > 123 
Integer found! 
=> 123 
2.1.5 :002 > "string" 
=> "string"