fixup! add BarExtenderRev
Vladimir Bauer
3 years ago
| 53 | 53 |
buffers [3]*bytes.Buffer
|
| 54 | 54 |
filler BarFiller
|
| 55 | 55 |
middleware func(BarFiller) BarFiller
|
|
56 |
extender extenderFunc
|
| 56 | 57 |
debugOut io.Writer
|
| 57 | |
|
| 58 | |
extender struct {
|
| 59 | |
fn extenderFunc
|
| 60 | |
rev bool
|
| 61 | |
}
|
| 62 | 58 |
|
| 63 | 59 |
wait struct {
|
| 64 | 60 |
bar *Bar // key for (*pState).queueBars
|
|
| 383 | 379 |
}
|
| 384 | 380 |
}
|
| 385 | 381 |
s.aborted = !s.completed
|
| 386 | |
s.extender.fn = makePanicExtender(p)
|
|
382 |
s.extender = makePanicExtender(p)
|
| 387 | 383 |
b.recoveredPanic = p
|
| 388 | 384 |
}
|
| 389 | |
if fn := s.extender.fn; fn != nil {
|
|
385 |
if fn := s.extender; fn != nil {
|
| 390 | 386 |
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 | |
}
|
| 396 | 387 |
}
|
| 397 | 388 |
frame := &renderFrame{
|
| 398 | 389 |
rows: rows,
|
|
| 413 | 404 |
if b.recoveredPanic == nil {
|
| 414 | 405 |
rows = append(rows, s.draw(stat))
|
| 415 | 406 |
}
|
| 416 | |
if fn := s.extender.fn; fn != nil {
|
|
407 |
if fn := s.extender; fn != nil {
|
| 417 | 408 |
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 | |
}
|
| 423 | 409 |
}
|
| 424 | 410 |
frame := &renderFrame{
|
| 425 | 411 |
rows: rows,
|
| 137 | 137 |
return nil
|
| 138 | 138 |
}
|
| 139 | 139 |
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 {
|
| 146 | 145 |
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 {
|
| 148 | 147 |
buf.Reset()
|
| 149 | 148 |
filler.Fill(buf, width, stat)
|
| 150 | 149 |
for {
|
|
| 156 | 155 |
}
|
| 157 | 156 |
return rows
|
| 158 | 157 |
}
|
|
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 |
}
|
| 159 | 170 |
}
|
| 160 | 171 |
|
| 161 | 172 |
// BarFillerTrim removes leading and trailing space around the underlying BarFiller.
|