デフォルト値がすでに入力されているプロンプトを端末に表示したい場合は、どうすればよいですか?
Rubyの標準では、履歴Readline.readline()
を設定できますが、デフォルト値を入力することはできません(少なくとも私が知る限り)
私はこのようなものが欲しいです:
コード:
input = Readline.readline_with_default('>', 'default_text')
コンソール:
> default_text|
デフォルト値がすでに入力されているプロンプトを端末に表示したい場合は、どうすればよいですか?
Rubyの標準では、履歴Readline.readline()
を設定できますが、デフォルト値を入力することはできません(少なくとも私が知る限り)
私はこのようなものが欲しいです:
コード:
input = Readline.readline_with_default('>', 'default_text')
コンソール:
> default_text|
+1 ハイライン
次のようなものを試してください:
require 'highline/import'
input = ask('> ') {|q| q.default = 'default_text'} # > |default_text|
ncursesの仕事のように聞こえます。rbcurse(http://rbcurse.rubyforge.org/)は、現時点で最もよく維持されているAPIのようです。
私は同じことで苦労しています。
私が今やっている方法は次のとおりです。
options = ["the_text_you_want"]
question = "use TAB or up arrow to show the text > "
Readline.completion_append_character = " "
Readline::HISTORY.push options.first
Readline.completion_proc = proc { |s| options.grep( /^#{Regexp.escape(s)}/ ) }
while value = Readline.readline(question, true)
exit if value == 'q'
puts value.chomp.strip #do something with the value here
end
はい、ばかげていますが、それが私が見つけた唯一の方法です。
誰かがこれに対する解決策を見つけましたか?
Highlineは、あなたが説明したこととまったく同じではありませんが、十分に近いかもしれません。