MCPcopy Index your code
hub / github.com/Effect-TS/effect / collectAllWhileReader

Function collectAllWhileReader

packages/effect/src/internal/sink.ts:209–229  ·  view source on GitHub ↗
(
  predicate: Predicate<In>,
  done: Chunk.Chunk<In>
)

Source from the content-addressed store, hash-verified

207
208/** @internal */
209const collectAllWhileReader = <In>(
210 predicate: Predicate<In>,
211 done: Chunk.Chunk<In>
212): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, Chunk.Chunk<In>, unknown> =>
213 core.readWith({
214 onInput: (input: Chunk.Chunk<In>) => {
215 const [collected, leftovers] = pipe(Chunk.toReadonlyArray(input), Arr.span(predicate))
216 if (leftovers.length === 0) {
217 return collectAllWhileReader(
218 predicate,
219 pipe(done, Chunk.appendAll(Chunk.unsafeFromArray(collected)))
220 )
221 }
222 return pipe(
223 core.write(Chunk.unsafeFromArray(leftovers)),
224 channel.zipRight(core.succeed(pipe(done, Chunk.appendAll(Chunk.unsafeFromArray(collected)))))
225 )
226 },
227 onFailure: core.fail,
228 onDone: () => core.succeed(done)
229 })
230
231/** @internal */
232export const collectAllWhileEffect = <In, E, R>(

Callers 1

collectAllWhileFunction · 0.85

Calls 3

spanMethod · 0.80
pipeFunction · 0.70
writeMethod · 0.65

Tested by

no test coverage detected