brew/Library/Homebrew/readline_nonblock.rb

26 lines
435 B
Ruby
Raw Normal View History

# typed: strict
# frozen_string_literal: true
class ReadlineNonblock
sig { params(io: IO).returns(String) }
def self.read(io)
line = +""
buffer = +""
2023-03-30 15:04:25 -07:00
begin
loop do
break if buffer == $INPUT_RECORD_SEPARATOR
2018-09-17 02:45:00 +02:00
io.read_nonblock(1, buffer)
2023-03-30 15:04:25 -07:00
line.concat(buffer)
end
2023-03-30 15:04:25 -07:00
line.freeze
rescue IO::WaitReadable, EOFError
raise if line.empty?
2018-09-17 02:45:00 +02:00
2023-03-30 15:04:25 -07:00
line.freeze
end
2016-08-18 22:11:42 +03:00
end
end