diff options
author | ztplz <mysticzt@gmail.com> | 2018-10-01 03:06:20 +0800 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-09-30 15:06:20 -0400 |
commit | 062b22fe569fffc0f52ec36de99e5048e4d42703 (patch) | |
tree | fb436c7163b414ea08a2050f4284fe87362f484c /js/truncate.ts | |
parent | f51903f7736e3969ba0003c074d80950aca74f70 (diff) |
Add deno.truncate (#805)
Diffstat (limited to 'js/truncate.ts')
-rw-r--r-- | js/truncate.ts | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/js/truncate.ts b/js/truncate.ts new file mode 100644 index 000000000..7b6e2f8e9 --- /dev/null +++ b/js/truncate.ts @@ -0,0 +1,42 @@ +// Copyright 2018 the Deno authors. All rights reserved. MIT license. +import * as fbs from "gen/msg_generated"; +import { flatbuffers } from "flatbuffers"; +import * as dispatch from "./dispatch"; + +/** + * Truncates or extends the specified file synchronously, + * updating the size of this file to become size. + * + * import { truncateSync } from "deno"; + * + * truncateSync("hello.txt", 10); + */ +export function truncateSync(name: string, len?: number): void { + dispatch.sendSync(...req(name, len)); +} + +/** + * Truncates or extends the specified file, + * updating the size of this file to become size. + * + * import { truncate } from "deno"; + * + * await truncate("hello.txt", 10); + */ +export async function truncate(name: string, len?: number): Promise<void> { + await dispatch.sendAsync(...req(name, len)); +} + +function req( + name: string, + len?: number +): [flatbuffers.Builder, fbs.Any, flatbuffers.Offset] { + const builder = new flatbuffers.Builder(); + const name_ = builder.createString(name); + len = len && len > 0 ? Math.floor(len) : 0; + fbs.Truncate.startTruncate(builder); + fbs.Truncate.addName(builder, name_); + fbs.Truncate.addLen(builder, len); + const msg = fbs.Truncate.endTruncate(builder); + return [builder, fbs.Any.Truncate, msg]; +} |