使用ruby的Highline#ask时,使用现有答案预填充提示

时间:2011-10-26 14:10:34

标签: ruby

我正在使用Ruby的Highline gem从用户那里获得输入。 我问以下

note = ask("Enter a note for this entry: ")

这很好,但是如果用户编辑了该条目 我想用这个问题的现有答案填充提示,以便可以直接编辑它而不是再次输入。

类似的东西:

note = ask("Enter a note for this entry: ", :current => note)

# Output:    
Enter a note for this entry: the current note_

2 个答案:

答案 0 :(得分:0)

我从未使用过highline gem,但是ask方法的文档表明它需要一个可选块。我想你会这样做:

note = ask("Enter a note for this entry: ") { |q| q.default = "Default Answer" }

答案 1 :(得分:0)

有点太晚了,但是:

我发现此问题的最佳解决方案是使用completion块中的ask属性。
所以当你编写以下代码时:

input = "Foobar" #default
loop do
    input = ask("Input: ") { |q| q.completion = [input]; q.readline = true }
end

你最终得到了这个

Input: Fo<hit tab>
Input: Foobar 

在每次迭代中,您都会更新completion,以便您可以轻松获取上次迭代的输入。