From 82bb591764b4d2c99aaa32b91101e3b6a9b5e54f Mon Sep 17 00:00:00 2001 From: xtrime-ru Date: Wed, 15 Nov 2023 21:29:51 +0100 Subject: [PATCH] Feat: add cancelation support for split --- src/functions.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/functions.php b/src/functions.php index 311e23f..41d462d 100644 --- a/src/functions.php +++ b/src/functions.php @@ -126,11 +126,11 @@ function getStderr(): WritableResourceStream * * @return \Traversable */ -function split(ReadableStream $source, string $delimiter): \Traversable +function split(ReadableStream $source, string $delimiter, ?Cancellation $cancellation = null): \Traversable { $buffer = ''; - while (null !== $chunk = $source->read()) { + while (null !== $chunk = $source->read($cancellation)) { $buffer .= $chunk; $split = \explode($delimiter, $buffer); @@ -149,7 +149,7 @@ function split(ReadableStream $source, string $delimiter): \Traversable * * @return \Traversable */ -function splitLines(ReadableStream $source): \Traversable +function splitLines(ReadableStream $source, ?Cancellation $cancellation = null): \Traversable { foreach (split($source, "\n") as $line) { yield \rtrim($line, "\r"); @@ -168,8 +168,9 @@ function parseLineDelimitedJson( bool $associative = false, int $depth = 512, int $flags = 0, + ?Cancellation $cancellation = null ): \Traversable { - foreach (splitLines($source) as $line) { + foreach (splitLines($source, $cancellation) as $line) { $line = \trim($line); if ($line === '') {