LineSeparator: fix javadoc formatting
[idea/community.git] / platform / util / src / com / intellij / util / LineSeparator.java
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.util;
3
4 import com.intellij.openapi.diagnostic.Logger;
5 import com.intellij.openapi.util.SystemInfo;
6 import com.intellij.openapi.util.text.StringUtil;
7 import org.jetbrains.annotations.NotNull;
8
9 import java.nio.charset.StandardCharsets;
10
11 /**
12  * Identifies a line separator:
13  * either Unix ({@code \n}), Windows ({@code \r\n}) or (possible not actual anymore) Classic Mac ({@code \r}).
14  * <p>The intention is to use this class everywhere, where a line separator is needed instead of just Strings.</p>
15  *
16  * @author Kirill Likhodedov
17  */
18 public enum LineSeparator {
19   LF("\n"),
20   CRLF("\r\n"),
21   CR("\r");
22
23   private final String mySeparatorString;
24   private final byte[] myBytes;
25
26   LineSeparator(@NotNull String separatorString) {
27     mySeparatorString = separatorString;
28     myBytes = separatorString.getBytes(StandardCharsets.UTF_8);
29   }
30
31   @NotNull
32   public static LineSeparator fromString(@NotNull String string) {
33     for (LineSeparator separator : values()) {
34       if (separator.getSeparatorString().equals(string)) {
35         return separator;
36       }
37     }
38     Logger.getInstance(LineSeparator.class).error("Invalid string for line separator: " + StringUtil.escapeStringCharacters(string));
39     return getSystemLineSeparator();
40   }
41
42   @NotNull
43   public String getSeparatorString() {
44     return mySeparatorString;
45   }
46
47   public byte @NotNull [] getSeparatorBytes() {
48     return myBytes;
49   }
50
51   @NotNull
52   public static LineSeparator getSystemLineSeparator() {
53     return SystemInfo.isWindows ? CRLF : LF;
54   }
55 }