brew/Library/Homebrew/readline_nonblock.rb
Mike McQuaid dc71b7c8f6
Cleanup extend/ directory usage.
- move some things out of `extend` that don't really fit there e.g.
  `Module`s that are included but not doing any
  overriding/monkeypatching
- move some code into `extend/os` to fix all remaining
  `rubocop:todo Homebrew/MoveToExtendOS`s
- remove some unneeded `bundle` skipper code that doesn't really make
  sense given our current bottling strategy
- extract some `Pathname` extensions to `extend/pathname` for separate
  files
- move a `ENV` `Kernel` extension into `kernel.rb`
- `odeprecate` a seemingly unused backwards compatibility method
- move `readline_nonblock` from a monkeypatch to a
  `ReadlineNonblock.read` method as its only used in one place
- fix up a link in documentation
2025-06-09 19:06:16 +01:00

26 lines
435 B
Ruby

# typed: strict
# frozen_string_literal: true
class ReadlineNonblock
sig { params(io: IO).returns(String) }
def self.read(io)
line = +""
buffer = +""
begin
loop do
break if buffer == $INPUT_RECORD_SEPARATOR
io.read_nonblock(1, buffer)
line.concat(buffer)
end
line.freeze
rescue IO::WaitReadable, EOFError
raise if line.empty?
line.freeze
end
end
end