in lib/openai/internal/util.rb [705:733]
def decode_lines(enum)
re = /(\r\n|\r|\n)/
buffer = String.new
cr_seen = nil
chain_fused(enum) do |y|
enum.each do |row|
offset = buffer.bytesize
buffer << row
while (match = re.match(buffer, cr_seen&.to_i || offset))
case [match.captures.first, cr_seen]
in ["\r", nil]
cr_seen = match.end(1)
next
in ["\r" | "\r\n", Integer]
y << buffer.slice!(..(cr_seen.pred))
else
y << buffer.slice!(..(match.end(1).pred))
end
offset = 0
cr_seen = nil
end
end
y << buffer.slice!(..(cr_seen.pred)) unless cr_seen.nil?
y << buffer unless buffer.empty?
end
end