ucl/ucl/io.go

31 lines
507 B
Go

package ucl
import (
"bytes"
"io"
)
func LineHandler(line func(string)) io.Writer {
return &lineHandlerWriter{
lineBuffer: new(bytes.Buffer),
writeLine: line,
}
}
type lineHandlerWriter struct {
lineBuffer *bytes.Buffer
writeLine func(line string)
}
func (uo *lineHandlerWriter) Write(p []byte) (n int, err error) {
for _, b := range p {
if b == '\n' {
uo.writeLine(uo.lineBuffer.String())
uo.lineBuffer.Reset()
} else {
uo.lineBuffer.WriteByte(b)
}
}
return len(p), nil
}