deno-using
A python-style with statement for deno.
Comes with some Using
types, e.g. Open
, ChDir
, TempDir
, and Timeout
.
Example:
import { using, Open } from "htps://deno.land/x/using/mod.ts";
const enc = new TextEncoder();
const dec = new TextDecoder();
await using(new Open("file", "w"), async (f: Deno.File) => {
const data = enc.encode("Hello world!\n");
await f.write(data);
});
await using(new Open("file", "r"), async (f: Deno.File) => {
const data = new Uint8Array(20);
await f.read(data);
const text = dec.decode(data);
console.log(text);
});
There is also a corresponding sync version UsingSync
.
Custom types
You can define your own Using
types by creating a class which implements Using
:
export class Open implements Using<Deno.File> {
constructor(filename: string, mode?: Deno.OpenMode) {
this.filename = filename;
this.mode = mode;
}
public async _aenter() {
this.file = await Deno.open(this.filename, this.mode);
return this.file;
}
public async _aexit(e) {
this.file.close();
}
private file: Deno.File;
private filename: string;
private mode: Deno.OpenMode;
}