Codebase list golang-github-vbauerster-mpb / 8b6a64f
refactoring: bar filler Vladimir Bauer 3 years ago
1 changed file(s) with 31 addition(s) and 25 deletion(s). Raw diff Collapse all Expand all
147147 return bf
148148 }
149149
150 func (s *bFiller) Fill(w io.Writer, stat decor.Statistics) {
150 func (s *bFiller) Fill(w io.Writer, stat decor.Statistics) (err error) {
151151 width := internal.CheckRequestedWidth(stat.RequestedWidth, stat.AvailableWidth)
152152 brackets := s.components[iLbound].width + s.components[iRbound].width
153153 // don't count brackets as progress
154154 width -= brackets
155155 if width < 0 {
156 return
157 }
158
159 mustWrite(w, s.components[iLbound].bytes)
160 defer mustWrite(w, s.components[iRbound].bytes)
156 return nil
157 }
158
159 _, err = w.Write(s.components[iLbound].bytes)
160 if err != nil {
161 return err
162 }
163 defer func() {
164 if err == nil {
165 _, err = w.Write(s.components[iRbound].bytes)
166 }
167 }()
161168
162169 if width == 0 {
163 return
170 return nil
164171 }
165172
166173 var filling [][]byte
229236 }
230237
231238 if s.rev {
232 flush(w, padding, filling)
233 } else {
234 flush(w, filling, padding)
235 }
236 }
237
238 func flush(w io.Writer, filling, padding [][]byte) {
239 return flush(w, padding, filling)
240 }
241 return flush(w, filling, padding)
242 }
243
244 func flush(w io.Writer, filling, padding [][]byte) error {
239245 for i := len(filling) - 1; i >= 0; i-- {
240 mustWrite(w, filling[i])
246 _, err := w.Write(filling[i])
247 if err != nil {
248 return err
249 }
241250 }
242251 for i := 0; i < len(padding); i++ {
243 mustWrite(w, padding[i])
244 }
245 }
246
247 func mustWrite(w io.Writer, p []byte) {
248 _, err := w.Write(p)
249 if err != nil {
250 panic(err)
251 }
252 }
252 _, err := w.Write(padding[i])
253 if err != nil {
254 return err
255 }
256 }
257 return nil
258 }