package text import ( "bytes" "fmt" "io" ) // Adds a trailing CRLF on non-zero input which is non-terminated. func ToLf(crlf []byte) []byte { lf, err := io.ReadAll(ToLfReader(bytes.NewReader(crlf))) if err != nil { panic(err.Error()) } return lf } // Zero-byte readers result in zero-byte readers. Otherwise, unterminated lines // are terminated. // Sole "\r" are interpreted as a line break (old Mac OS style). func ToLfReader(r io.Reader) io.Reader { return Map(Lf(), r) } // Adds a trailing LF on non-zero input which is non-terminated. func ToCrlf(lf []byte) []byte { crlf, err := io.ReadAll(ToCrlfReader(bytes.NewReader(lf))) if err != nil { panic(fmt.Errorf("linenormalisation: Lf2CrlfAll: %v", err)) } return crlf } func ToCrlfReader(r io.Reader) io.Reader { return Map(Crlf(), r) }