Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hayd/deno-using

python-style with statements for deno
https://github.com/hayd/deno-using

Last synced: about 1 month ago
JSON representation

python-style with statements for deno

Awesome Lists containing this project

README

        

# deno-using

A python-style with statement for deno.

Comes with some `Using` types, e.g. `Open`, `ChDir`, `TempDir`, and `Timeout`.

## Example:

```ts
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`:

```ts
export class Open implements Using {
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;
}
```