2011-10-26 1 views
2

Rubyのハイライン宝石を使用しているユーザーからの入力があります。 私は聞いてるのよRubyのハイラインを使用しているときに既存の回答が表示されているプレフィルプロンプト#ask

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_ 
+1

この解決策を見つけたことはありますか? –

+0

私はまた、ソリューションに興味があります – Mosselman

答えて

0

私はハイラインの宝石を使ったことがないが、頼むメソッドのドキュメントは、それが任意のブロックを取る示しています。私は、これはあなたがそれを行うだろうかだと思う:

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

こんにちは@Derek:デフォルトのオプションは、ユーザーが答えを空白のままにして質問を終了した場合に返されるデフォルトの回答を設定するために使用されます。 – Rob

+0

ああ、そうですね。私は何とかその要件を逃した。 –

+0

このためにハイラインAPIに何も表示されません。私は手作業でstdinに書き込もうとしましたが、一度書いたテキストは不変です。 Hmph ... –

0

少し遅すぎる、しかし:私は、この問題が見つかり最善の解決策はaskブロックでcompletion属性を使用する

ました。
だから次のようなコードを記述する場合:

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

あなたはそう簡単にあなたの最後の反復からの入力を取得することができますcompletionを更新するすべての反復でこの

Input: Fo<hit tab> 
Input: Foobar 

で終わります。

関連する問題