package common import ( "bytes" ) // ScanLines scan lines but keep the suffix \r and \n func ScanLines(data []byte, atEOF bool) (advance int, token []byte, err error) { if atEOF && len(data) == 0 { return 0, nil, nil } if i := bytes.IndexByte(data, '\n'); i >= 0 { return i + 1, data[:i+1], nil } if i := bytes.IndexByte(data, '\r'); i >= 0 { return i + 1, data[:i+1], nil } // If we're at EOF, we have a final, non-terminated line. Return it. if atEOF { return len(data), data, nil } // Request more data. return 0, nil, nil }