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