An IO that wraps another IO, and only reads up to the beginning of a specified delimiter.
This is useful for exposing part of an underlying stream to a client.
io = IO::Memory.new "abc||123" delimited = IO::Delimited.new(io, read_delimiter: "||") delimited.gets_to_end # => "abc" delimited.gets_to_end # => "" io.gets_to_end # => "123"
Creates a new IO::Delimited which wraps io, and can read until the byte sequence read_delimiter (interpreted as UTF-8) is found.
Creates a new IO::Delimited which wraps io, and can read until the byte sequence read_delimiter is found.
Closes this IO.
Returns true if this IO is closed.
Peeks into this IO, if possible.
Reads at most slice.size bytes from this IO into slice.
If #sync_close? is true, closing this IO will close the underlying IO.
If #sync_close? is true, closing this IO will close the underlying IO.
Writes the contents of slice into this IO.
IO
IO
Reference
Reference
Reference
Object
Object
Object
Creates a new IO::Delimited which wraps io, and can read until the byte sequence read_delimiter (interpreted as UTF-8) is found. If sync_close is set, calling #close calls #close on the underlying IO.
Creates a new IO::Delimited which wraps io, and can read until the byte sequence read_delimiter is found. If sync_close is set, calling #close calls #close on the underlying IO.
Peeks into this IO, if possible.
It returns:
nil if this IO isn't peekable at this moment or at allThe returned bytes are only valid data until a next call to any method that reads from this IO is invoked.
By default this method returns nil, but IO implementations that provide buffering or wrap other IOs should override this method.
Reads at most slice.size bytes from this IO into slice. Returns the number of bytes read, which is 0 if and only if there is no more data to read (so checking for 0 is the way to detect end of file).
io = IO::Memory.new "hello" slice = Bytes.new(4) io.read(slice) # => 4 slice # => Bytes[104, 101, 108, 108] io.read(slice) # => 1 slice # => Bytes[111, 101, 108, 108] io.read(slice) # => 0
If #sync_close? is true, closing this IO will close the underlying IO.
If #sync_close? is true, closing this IO will close the underlying IO.
© 2012–2026 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/1.19.0/IO/Delimited.html