pkg/csv/csv.go (30 lines of code) (raw):
package csv
// Append CSV appends a record to the given buffer without quoting.
func Append(dst []byte, record []byte) []byte {
dst = append(dst, ',')
dst = append(dst, record...)
return dst
}
// AppendQuota CSV appends a record to the given buffer with quoting.
func AppendQuoted(dst []byte, field []byte) []byte {
dst = append(dst, ',')
dst = append(dst, '"')
for len(field) > 0 {
// Encode the special character.
if len(field) > 0 {
switch field[0] {
case '"':
dst = append(dst, `""`...)
case '\r':
dst = append(dst, '\r')
case '\n':
dst = append(dst, '\n')
default:
dst = append(dst, field[0])
}
field = field[1:]
}
}
dst = append(dst, '"')
return dst
}
// AppendNewLine appends a new line to the given buffer.
func AppendNewLine(dst []byte) []byte {
return append(dst, '\n')
}