From b462ad253042c13c95d9b9b205920a17a12dae28 Mon Sep 17 00:00:00 2001 From: Vincent LE GOFF Date: Sat, 13 Apr 2019 21:26:09 +0200 Subject: [PATCH] Added read file str (#276) --- fs/read_file_str.ts | 33 +++++++++++++++++++++++++++++++++ fs/read_file_str_test.ts | 20 ++++++++++++++++++++ fs/test.ts | 1 + 3 files changed, 54 insertions(+) create mode 100644 fs/read_file_str.ts create mode 100644 fs/read_file_str_test.ts diff --git a/fs/read_file_str.ts b/fs/read_file_str.ts new file mode 100644 index 0000000000..9f87c93389 --- /dev/null +++ b/fs/read_file_str.ts @@ -0,0 +1,33 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. + +export interface ReadOptions { + encoding?: string; +} + +/** + * Read file synchronously and output it as a string. + * + * @param filename File to read + * @param opts Read options + */ +export function readFileStrSync( + filename: string, + opts: ReadOptions = {} +): string { + const decoder = new TextDecoder(opts.encoding); + return decoder.decode(Deno.readFileSync(filename)); +} + +/** + * Read file and output it as a string. + * + * @param filename File to read + * @param opts Read options + */ +export async function readFileStr( + filename: string, + opts: ReadOptions = {} +): Promise { + const decoder = new TextDecoder(opts.encoding); + return decoder.decode(await Deno.readFile(filename)); +} diff --git a/fs/read_file_str_test.ts b/fs/read_file_str_test.ts new file mode 100644 index 0000000000..eb529022c5 --- /dev/null +++ b/fs/read_file_str_test.ts @@ -0,0 +1,20 @@ +import { test } from "../testing/mod.ts"; +import { assert } from "../testing/asserts.ts"; +import { readFileStrSync, readFileStr } from "./read_file_str.ts"; +import * as path from "./path/mod.ts"; + +const testdataDir = path.resolve("fs", "testdata"); + +test(function testReadFileSync() { + const jsonFile = path.join(testdataDir, "json_valid_obj.json"); + const strFile = readFileStrSync(jsonFile); + assert(typeof strFile === "string"); + assert(strFile.length > 0); +}); + +test(async function testReadFile() { + const jsonFile = path.join(testdataDir, "json_valid_obj.json"); + const strFile = await readFileStr(jsonFile); + assert(typeof strFile === "string"); + assert(strFile.length > 0); +}); diff --git a/fs/test.ts b/fs/test.ts index cc9013eed7..025c0efb25 100644 --- a/fs/test.ts +++ b/fs/test.ts @@ -10,5 +10,6 @@ import "./ensure_dir_test.ts"; import "./ensure_file_test.ts"; import "./move_test.ts"; import "./read_json_test.ts"; +import "./read_file_str_test.ts"; import "./write_json_test.ts"; import "./utils_test.ts";