|
1234567891011121314151617181920212223242526 |
- package main
-
- import (
- "bytes"
- "io"
- )
-
- type Splitter struct {
- Delimiter []byte
- IgnoreEOF bool
- }
-
- func (that *Splitter) Split(data []byte, atEOF bool) (int, []byte, error) {
- for i := 0; i < len(data); i++ {
- if bytes.Equal(data[i:i+len(that.Delimiter)], that.Delimiter) {
- return i + len(that.Delimiter), data[:i], nil
- }
- }
- if len(data) == 0 || !atEOF {
- return 0, nil, nil
- }
- if atEOF && that.IgnoreEOF {
- return len(data), data, nil
- }
- return 0, data, io.ErrUnexpectedEOF
- }
|