Codebase list golang-github-vbauerster-mpb / e7bb7d4
refactoring bar filler Vladimir Bauer 6 years ago
1 changed file(s) with 14 addition(s) and 21 deletion(s). Raw diff Collapse all Expand all
110110 defer w.Write(s.format[rRight])
111111
112112 cwidth := int(internal.PercentageRound(stat.Total, stat.Current, width))
113 bb := make([][]byte, cwidth)
114113 space := &space{
115114 space: s.format[rSpace],
116115 rwidth: s.rwidth[rSpace],
117116 count: width - cwidth,
118117 }
119 if cwidth == 0 {
120 s.flush(w, space, bb)
121 return
118
119 index, refill := 0, 0
120 bb := make([][]byte, cwidth)
121
122 if cwidth > 0 && cwidth != width {
123 bb[index] = s.tip
124 cwidth -= s.rwidth[rTip]
125 index++
122126 }
123127
124 index := 0
125 if space.count != 0 {
126 bb[index] = s.tip
127 cwidth -= s.rwidth[rTip]
128 } else {
129 bb[index] = s.format[rFill]
130 cwidth -= s.rwidth[rFill]
131 }
132 index++
133
134 rwidth := 0
135128 if s.refill > 0 {
136 rwidth = cwidth
129 refill = cwidth
137130 if s.refill < stat.Current {
138 rwidth = int(internal.PercentageRound(stat.Total, int64(s.refill), width))
131 refill = int(internal.PercentageRound(stat.Total, int64(s.refill), width))
139132 }
140 cwidth -= rwidth
133 cwidth -= refill
141134 }
142135
143136 for cwidth > 0 {
146139 index++
147140 }
148141
149 for rwidth > 0 {
142 for refill > 0 {
150143 bb[index] = s.format[rRefill]
151 rwidth -= s.rwidth[rRefill]
144 refill -= s.rwidth[rRefill]
152145 index++
153146 }
154147
155 if index != len(bb) || space.rwidth > 1 {
148 if cwidth+refill < 0 || space.rwidth > 1 {
156149 buf := new(bytes.Buffer)
157150 s.flush(buf, space, bb[:index])
158151 io.WriteString(w, runewidth.Truncate(buf.String(), width, "…"))