From 151ce0266eb4de2c8fc600c81c192a5f791b6169 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Wed, 9 Oct 2019 17:10:09 -0400 Subject: Move everything into std subdir --- std/fs/eol.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 std/fs/eol.ts (limited to 'std/fs/eol.ts') diff --git a/std/fs/eol.ts b/std/fs/eol.ts new file mode 100644 index 000000000..55d03fa83 --- /dev/null +++ b/std/fs/eol.ts @@ -0,0 +1,31 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. + +/** EndOfLine character enum */ +export enum EOL { + LF = "\n", + CRLF = "\r\n" +} + +const regDetect = /(?:\r?\n)/g; + +/** + * Detect the EOL character for string input. + * returns null if no newline + */ +export function detect(content: string): EOL | null { + const d = content.match(regDetect); + if (!d || d.length === 0) { + return null; + } + const crlf = d.filter((x: string): boolean => x === EOL.CRLF); + if (crlf.length > 0) { + return EOL.CRLF; + } else { + return EOL.LF; + } +} + +/** Format the file to the targeted EOL */ +export function format(content: string, eol: EOL): string { + return content.replace(regDetect, eol); +} -- cgit v1.2.3