是否可以拦截IRB输入?特别针对#Fixnum课程吗?
示例:
5
=> 5
我需要做的是:(伪代码)
if IRB.input.is_a?(Fixnum)
some_method(IRB.input) # some_method(5)
end
答案 0 :(得分:0)
看看这个file。 你可以找到Irb#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
Irb输出示例:
spark@think:~$ irb
2.1.5 :001 > 123
Integer found!
=> 123
2.1.5 :002 > "string"
=> "string"