summaryrefslogtreecommitdiff
path: root/std/fs/eol.ts
blob: d4bb8032c6a456b102a800ebadf78cc01a469659 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Copyright 2018-2020 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);
}