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