5

Ruby で小さな telnet サーバーを実装しています。私が現在直面している問題は、タブ補完とコマンドライン履歴をサポートできるように、readline サポートを追加したいということです。Readlineライブラリを調べましたが、stdin 経由でしか機能しないようです。Rubyでこれを行う方法はありますか( Pythonの解決策に気付きました)?

4

1 に答える 1

1

You can do this by plumbing a pipe into readline. Here's an example using the while loop from the ri readline documentation that just sends command 1, command2, command 3 to readline.

require 'readline'

rd, wr = IO.pipe

(1..3).each do |i|
  wr.puts "command #{i}"
end
wr.close

Readline.input = rd
while buf = Readline.readline('', true)
  p Readline::HISTORY.to_a
  print("-> ", buf, "\n")
end

Output:

["command 1"]
-> command 1
["command 1", "command 2"]
-> command 2
["command 1", "command 2", "command 3"]
-> command 3
于 2011-06-23T12:10:20.317 に答える