| 389 | 389 |
}
|
| 390 | 390 |
|
| 391 | 391 |
func (s *bState) draw(stat decor.Statistics) io.Reader {
|
| 392 | |
if !s.trimSpace {
|
|
392 |
nlr := strings.NewReader("\n")
|
|
393 |
tw := stat.AvailableWidth
|
|
394 |
for _, d := range s.pDecorators {
|
|
395 |
s.bufP.WriteString(d.Decor(stat))
|
|
396 |
}
|
|
397 |
stat.AvailableWidth -= runewidth.StringWidth(stripansi.Strip(s.bufP.String()))
|
|
398 |
if stat.AvailableWidth < 1 {
|
|
399 |
trunc := strings.NewReader(runewidth.Truncate(stripansi.Strip(s.bufP.String()), tw, "…"))
|
|
400 |
s.bufP.Reset()
|
|
401 |
return io.MultiReader(trunc, nlr)
|
|
402 |
}
|
|
403 |
|
|
404 |
if !s.trimSpace && stat.AvailableWidth > 1 {
|
| 393 | 405 |
stat.AvailableWidth -= 2
|
| 394 | 406 |
s.bufB.WriteByte(' ')
|
| 395 | 407 |
defer s.bufB.WriteByte(' ')
|
| 396 | 408 |
}
|
| 397 | 409 |
|
| 398 | |
nlr := strings.NewReader("\n")
|
| 399 | |
tw := stat.AvailableWidth
|
| 400 | |
for _, d := range s.pDecorators {
|
| 401 | |
str := d.Decor(stat)
|
| 402 | |
stat.AvailableWidth -= runewidth.StringWidth(stripansi.Strip(str))
|
| 403 | |
s.bufP.WriteString(str)
|
| 404 | |
}
|
| 405 | |
if stat.AvailableWidth <= 0 {
|
| 406 | |
trunc := strings.NewReader(runewidth.Truncate(stripansi.Strip(s.bufP.String()), tw, "…"))
|
| 407 | |
s.bufP.Reset()
|
| 408 | |
return io.MultiReader(trunc, s.bufB, nlr)
|
| 409 | |
}
|
| 410 | |
|
| 411 | 410 |
tw = stat.AvailableWidth
|
| 412 | 411 |
for _, d := range s.aDecorators {
|
| 413 | |
str := d.Decor(stat)
|
| 414 | |
stat.AvailableWidth -= runewidth.StringWidth(stripansi.Strip(str))
|
| 415 | |
s.bufA.WriteString(str)
|
| 416 | |
}
|
| 417 | |
if stat.AvailableWidth <= 0 {
|
|
412 |
s.bufA.WriteString(d.Decor(stat))
|
|
413 |
}
|
|
414 |
stat.AvailableWidth -= runewidth.StringWidth(stripansi.Strip(s.bufA.String()))
|
|
415 |
if stat.AvailableWidth < 1 {
|
| 418 | 416 |
trunc := strings.NewReader(runewidth.Truncate(stripansi.Strip(s.bufA.String()), tw, "…"))
|
| 419 | 417 |
s.bufA.Reset()
|
| 420 | 418 |
return io.MultiReader(s.bufP, s.bufB, trunc, nlr)
|