コマンド補完でreadlineを使用するRubyアプリがあります。
最初の文字列 (コマンド) が入力された後、その引数を完了できるようにしたいと考えています。引数リストは、選択したコマンドに基づいている必要があります。
誰かが簡単な例を持っていますか?
コマンドは次のとおりです。
COMMANDS = [
'collect', 'watch'
].sort
COLLECT = [
'stuff', 'otherstuff'
].sort
comp = proc do |s|
COMMANDS.grep( /^#{Regexp.escape(s)}/ )
end
Readline.completion_proc = comp
を押すたびにTAB、proc ブロックが実行され、COMMANDS
配列からのコマンドが照合されます。COLLECT
コマンドの 1 つが完全に一致した後、配列内でのみ引数の検索を開始したいと思います。