/
githubmirror
/
act
Обзор
Документация
Войти
/
githubmirror
/
act
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
pkg/common/line_writer.go
50 строк
891 B
Casey Lee
integration test
24 фев 2020, 23:48
Не верифицирован
24 фев 2020, 23:48
037e08a
Код
Авторство
О чём код?
package common import ( "bytes" "io" ) // LineHandler is a callback function for handling a line type LineHandler func(line string) bool type lineWriter struct { buffer bytes.Buffer handlers []LineHandler } // NewLineWriter creates a new instance of a line writer func NewLineWriter(handlers ...LineHandler) io.Writer { w := new(lineWriter) w.handlers = handlers return w } func (lw *lineWriter) Write(p []byte) (n int, err error) { pBuf := bytes.NewBuffer(p) written := 0 for { line, err := pBuf.ReadString('\n') w, _ := lw.buffer.WriteString(line) written += w if err == nil { lw.handleLine(lw.buffer.String()) lw.buffer.Reset() } else if err == io.EOF { break } else { return written, err } } return written, nil } func (lw *lineWriter) handleLine(line string) { for _, h := range lw.handlers { ok := h(line) if !ok { break } } }