Ruby Line Редактирование Telnet-сервера - PullRequest
5 голосов
/ 15 июня 2011

Я реализую небольшой сервер telnet в Ruby.Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я хочу добавить поддержку readline, чтобы у меня была поддержка табуляции и истории команд.Я посмотрел на библиотеку Readline , но кажется, что она будет работать только через stdin.Есть ли способ сделать это в Ruby (я заметил решение для Python )?

1 Ответ

1 голос
/ 23 июня 2011

Вы можете сделать это, вставив трубу в readline.Вот пример использования цикла while из документации ri readline, который просто отправляет command 1, command2, command 3 на 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

Вывод:

["command 1"]
-> command 1
["command 1", "command 2"]
-> command 2
["command 1", "command 2", "command 3"]
-> command 3
...