首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何拦截IRB输入?

如何拦截IRB输入?
EN

Stack Overflow用户
提问于 2015-02-05 04:10:01
回答 1查看 79关注 0票数 3

是否有可能拦截IRB输入?专门为class#Fixnum?

示例:

代码语言:javascript
复制
5
=> 5

我需要做的是:(伪代码)

代码语言:javascript
复制
if IRB.input.is_a?(Fixnum)
  some_method(IRB.input)  # some_method(5)
end
EN

回答 1

Stack Overflow用户

发布于 2015-02-05 05:57:49

看看这个文件。您可以找到Irb#eval_input方法并对它们进行修补:

代码语言:javascript
复制
# 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输出示例:

代码语言:javascript
复制
spark@think:~$ irb
2.1.5 :001 > 123
Integer found!
 => 123 
2.1.5 :002 > "string"
 => "string" 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28336066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档