mirror of
https://github.com/denoland/std.git
synced 2024-11-22 04:59:05 +00:00
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
|
|
import { TextLineStream } from "./text_line_stream.ts";
|
|
|
|
/**
|
|
* Converts a {@linkcode ReadableStream} of {@linkcode Uint8Array}s into one of
|
|
* lines delimited by `\n` or `\r\n`. Trims the last line if empty.
|
|
*
|
|
* @experimental **UNSTABLE**: New API, yet to be vetted.
|
|
*
|
|
* @param readable A stream of {@linkcode Uint8Array}s.
|
|
* @param options Stream options.
|
|
* @returns A stream of lines delimited by `\n` or `\r\n`.
|
|
*
|
|
* @example Usage
|
|
* ```ts
|
|
* import { toLines } from "@std/streams/unstable-to-lines";
|
|
* import { assertEquals } from "@std/assert/equals";
|
|
*
|
|
* const readable = ReadableStream.from([
|
|
* "qwertzu",
|
|
* "iopasd\r\nmnbvc",
|
|
* "xylk\rjhgfds\napoiuzt\r",
|
|
* "qwr\r09ei\rqwrjiowqr\r",
|
|
* ]).pipeThrough(new TextEncoderStream());
|
|
*
|
|
* assertEquals(await Array.fromAsync(toLines(readable)), [
|
|
* "qwertzuiopasd",
|
|
* "mnbvcxylk\rjhgfds",
|
|
* "apoiuzt\rqwr\r09ei\rqwrjiowqr\r",
|
|
* ]);
|
|
* ```
|
|
*/
|
|
export function toLines(
|
|
readable: ReadableStream<Uint8Array>,
|
|
options?: StreamPipeOptions,
|
|
): ReadableStream<string> {
|
|
return readable
|
|
.pipeThrough(new TextDecoderStream())
|
|
.pipeThrough(new TextLineStream(), options);
|
|
}
|