From 68d287eed5dcdc7b84a317fa90c4c9131389c0b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 22 Apr 2020 21:30:45 +0200 Subject: BREAKING CHANGE: rename Deno.toAsyncIterator() to Deno.iter() (#4848) * rename Deno.toAsyncIterator() to Deno.iter() * adds sync version Deno.iterSync() * adds optional second argument for buffer size --- cli/js/io.ts | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) (limited to 'cli/js/io.ts') diff --git a/cli/js/io.ts b/cli/js/io.ts index b5af34224..023718100 100644 --- a/cli/js/io.ts +++ b/cli/js/io.ts @@ -84,23 +84,32 @@ export async function copy(dst: Writer, src: Reader): Promise { return n; } -export function toAsyncIterator(r: Reader): AsyncIterableIterator { - const b = new Uint8Array(1024); - return { - [Symbol.asyncIterator](): AsyncIterableIterator { - return this; - }, - - async next(): Promise> { - const result = await r.read(b); - if (result === EOF) { - return { value: new Uint8Array(), done: true }; - } - - return { - value: b.subarray(0, result), - done: false, - }; - }, - }; +export async function* iter( + r: Reader, + bufSize?: number +): AsyncIterableIterator { + const b = new Uint8Array(bufSize ?? 1024); + while (true) { + const result = await r.read(b); + if (result === EOF) { + break; + } + + yield b.subarray(0, result); + } +} + +export function* iterSync( + r: SyncReader, + bufSize?: number +): IterableIterator { + const b = new Uint8Array(bufSize ?? 1024); + while (true) { + const result = r.readSync(b); + if (result === EOF) { + break; + } + + yield b.subarray(0, result); + } } -- cgit v1.2.3