Codebase list golang-github-vbauerster-mpb / 820f84d
fixup! add BarExtenderRev Vladimir Bauer 3 years ago
2 changed file(s) with 22 addition(s) and 25 deletion(s). Raw diff Collapse all Expand all
5353 buffers [3]*bytes.Buffer
5454 filler BarFiller
5555 middleware func(BarFiller) BarFiller
56 extender extenderFunc
5657 debugOut io.Writer
57
58 extender struct {
59 fn extenderFunc
60 rev bool
61 }
6258
6359 wait struct {
6460 bar *Bar // key for (*pState).queueBars
383379 }
384380 }
385381 s.aborted = !s.completed
386 s.extender.fn = makePanicExtender(p)
382 s.extender = makePanicExtender(p)
387383 b.recoveredPanic = p
388384 }
389 if fn := s.extender.fn; fn != nil {
385 if fn := s.extender; fn != nil {
390386 rows = fn(rows, s.reqWidth, stat)
391 if s.extender.rev {
392 for left, right := 0, len(rows)-1; left < right; left, right = left+1, right-1 {
393 rows[left], rows[right] = rows[right], rows[left]
394 }
395 }
396387 }
397388 frame := &renderFrame{
398389 rows: rows,
413404 if b.recoveredPanic == nil {
414405 rows = append(rows, s.draw(stat))
415406 }
416 if fn := s.extender.fn; fn != nil {
407 if fn := s.extender; fn != nil {
417408 rows = fn(rows, s.reqWidth, stat)
418 if s.extender.rev {
419 for left, right := 0, len(rows)-1; left < right; left, right = left+1, right-1 {
420 rows[left], rows[right] = rows[right], rows[left]
421 }
422 }
423409 }
424410 frame := &renderFrame{
425411 rows: rows,
137137 return nil
138138 }
139139 return func(s *bState) {
140 s.extender.fn = makeExtenderFunc(filler)
141 s.extender.rev = rev
142 }
143 }
144
145 func makeExtenderFunc(filler BarFiller) extenderFunc {
140 s.extender = makeExtenderFunc(filler, rev)
141 }
142 }
143
144 func makeExtenderFunc(filler BarFiller, rev bool) extenderFunc {
146145 buf := new(bytes.Buffer)
147 return func(rows []io.Reader, width int, stat decor.Statistics) []io.Reader {
146 base := func(rows []io.Reader, width int, stat decor.Statistics) []io.Reader {
148147 buf.Reset()
149148 filler.Fill(buf, width, stat)
150149 for {
156155 }
157156 return rows
158157 }
158
159 if !rev {
160 return base
161 } else {
162 return func(rows []io.Reader, width int, stat decor.Statistics) []io.Reader {
163 rows = base(rows, width, stat)
164 for left, right := 0, len(rows)-1; left < right; left, right = left+1, right-1 {
165 rows[left], rows[right] = rows[right], rows[left]
166 }
167 return rows
168 }
169 }
159170 }
160171
161172 // BarFillerTrim removes leading and trailing space around the underlying BarFiller.