diff --git a/bar.go b/bar.go index 0301b18..c708077 100644 --- a/bar.go +++ b/bar.go @@ -27,7 +27,7 @@ } type syncTable [2][]chan int -type extenderFunc func([]io.Reader, decor.Statistics) ([]io.Reader, error) +type extenderFunc func(decor.Statistics, ...io.Reader) ([]io.Reader, error) // bState is actual bar's state. type bState struct { @@ -427,10 +427,7 @@ b.frameCh <- frame return } - frame.rows = append(frame.rows, r) - if s.extender != nil { - frame.rows, frame.err = s.extender(frame.rows, stat) - } + frame.rows, frame.err = s.extender(stat, r) if s.aborted || s.completed() { frame.shutdown = s.shutdown frame.rmOnComplete = s.rmOnComplete diff --git a/bar_option.go b/bar_option.go index d001db3..64d2e18 100644 --- a/bar_option.go +++ b/bar_option.go @@ -122,28 +122,27 @@ func makeExtenderFunc(filler BarFiller, rev bool) extenderFunc { buf := new(bytes.Buffer) - base := func(rows []io.Reader, stat decor.Statistics) ([]io.Reader, error) { + base := func(stat decor.Statistics, rows ...io.Reader) ([]io.Reader, error) { err := filler.Fill(buf, stat) if err != nil { buf.Reset() return rows, err } for { - b, err := buf.ReadBytes('\n') + line, err := buf.ReadBytes('\n') if err != nil { buf.Reset() break } - rows = append(rows, bytes.NewReader(b)) + rows = append(rows, bytes.NewReader(line)) } return rows, err } - if !rev { return base } - return func(rows []io.Reader, stat decor.Statistics) ([]io.Reader, error) { - rows, err := base(rows, stat) + return func(stat decor.Statistics, rows ...io.Reader) ([]io.Reader, error) { + rows, err := base(stat, rows...) if err != nil { return rows, err } diff --git a/progress.go b/progress.go index 8009faf..09abd29 100644 --- a/progress.go +++ b/progress.go @@ -11,6 +11,7 @@ "time" "github.com/vbauerster/mpb/v8/cwriter" + "github.com/vbauerster/mpb/v8/decor" ) const defaultRefreshRate = 150 * time.Millisecond @@ -435,6 +436,9 @@ filler: filler, renderReq: s.renderReq, autoRefresh: s.autoRefresh, + extender: func(_ decor.Statistics, rows ...io.Reader) ([]io.Reader, error) { + return rows, nil + }, } if total > 0 {