Ruby中的预填充提示
参见英文答案 >
What will give me something like ruby readline with a default value?????????????????????????????????????5个
我正在使用Ruby编写一个小命令行实用程序来搜索Pubmed.现在,我提示用户进行查询并显示结果,用户可以选择附加到查询或输入全新的查询.我想添加编辑当前查询的功能;即提示应预先填充上一个查询的可编辑版本,如下所示: Enter query: <PREVIOUS QUERY HERE> 打印出提示旁边的上一个查询很容易,但如何使此输出可编辑,就好像用户自己键入了它一样? @casper: module DbHippo module RbReadline <CASPER'S EXTENSION HERE> end end 我希望在DbHippo,DbHippo :: Source的另一个子模块中使用该功能.在DbHippo :: Source我在顶部添加: require 'rb-readline' require 'db_hippo/rb-readline' 然后在DbHippo :: Source的一个方法中,我有: RbReadline.prefill_prompt(query) query = Readline.readline("Query: ",true) 查询变量绝对不是空的,但由于某种原因,在此上下文中,提示不会被预先填充.我还注意到,如果我将扩展名放在同一个文件(lib / db_hippo / rb-readline)中而不使其成为DbHippo的子模块,我会得到错误:未初始化的常量DbHippo :: Source :: Readline(NameError)就行了: query = Readline.readline("Query: ",true) 这似乎与模块,需要语句和宝石的正确命名有关.这是我试图建造的第一颗宝石.知道这里出了什么问题吗? 解决方法
您可以使用
RbReadline执行此操作:
require 'rubygems' require 'rb-readline' module RbReadline def self.prefill_prompt(str) @rl_prefill = str @rl_startup_hook = :rl_prefill_hook end def self.rl_prefill_hook rl_insert_text @rl_prefill if @rl_prefill @rl_startup_hook = nil end end RbReadline.prefill_prompt("Previous query") str = Readline.readline("Enter query: ",true) puts "You entered: #{str}" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |