You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-zero/core/iox/textlinescanner.go

43 lines
709 B
Go

4 years ago
package iox
import (
"bufio"
"io"
"strings"
)
type TextLineScanner struct {
reader *bufio.Reader
hasNext bool
line string
err error
}
func NewTextLineScanner(reader io.Reader) *TextLineScanner {
return &TextLineScanner{
reader: bufio.NewReader(reader),
hasNext: true,
}
}
func (scanner *TextLineScanner) Scan() bool {
if !scanner.hasNext {
return false
}
line, err := scanner.reader.ReadString('\n')
scanner.line = strings.TrimRight(line, "\n")
if err == io.EOF {
scanner.hasNext = false
return true
} else if err != nil {
scanner.err = err
return false
}
return true
}
func (scanner *TextLineScanner) Line() (string, error) {
return scanner.line, scanner.err
}