Ruby Line Редактирование Telnet-сервера

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

1 ответ

Вы можете сделать это, вставив трубу в readline. Вот пример использования while цикл из документации readline ri, которая просто отправляет command 1, command2, command 3 читать

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
Другие вопросы по тегам