summaryrefslogtreecommitdiff
path: root/js/truncate.ts
diff options
context:
space:
mode:
authorztplz <mysticzt@gmail.com>2018-10-01 03:06:20 +0800
committerRyan Dahl <ry@tinyclouds.org>2018-09-30 15:06:20 -0400
commit062b22fe569fffc0f52ec36de99e5048e4d42703 (patch)
treefb436c7163b414ea08a2050f4284fe87362f484c /js/truncate.ts
parentf51903f7736e3969ba0003c074d80950aca74f70 (diff)
Add deno.truncate (#805)
Diffstat (limited to 'js/truncate.ts')
-rw-r--r--js/truncate.ts42
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];
+}