LineDelimiter.java

package de.siegmar.fastcsv.writer;

/// Enumeration for different line delimiters (LF, CR, CRLF, platform default).
public enum LineDelimiter {

    /// Line Feed - (UNIX).
    LF("\n"),

    /// Carriage Return - (Mac classic).
    CR("\r"),

    /// Carriage Return and Line Feed (Windows).
    CRLF("\r\n"),

    /// Use current platform default ([System#lineSeparator()].
    PLATFORM(System.lineSeparator());

    private final String str;

    LineDelimiter(final String str) {
        this.str = str;
    }

    /// Build an enum based on the given string.
    ///
    /// @param str the string to convert to an enum.
    /// @return the enum representation of the given string.
    /// @throws IllegalArgumentException if the string is not a known line delimiter.
    public static LineDelimiter of(final String str) {
        switch (str) {
            case "\r\n":
                return CRLF;
            case "\n":
                return LF;
            case "\r":
                return CR;
            default:
                throw new IllegalArgumentException("Unknown line delimiter: " + str);
        }
    }

    @Override
    public String toString() {
        return str;
    }

}