diff --git a/decor/counters.go b/decor/counters.go index f4c9764..4d58164 100644 --- a/decor/counters.go +++ b/decor/counters.go @@ -45,6 +45,9 @@ wc = widthConf } wc.Init() + if pairFmt == "" { + pairFmt = "%d / %d" + } d := &countersDecorator{ WC: wc, unit: unit, diff --git a/decor/percentage.go b/decor/percentage.go index 38bacf3..c9f88e0 100644 --- a/decor/percentage.go +++ b/decor/percentage.go @@ -25,25 +25,29 @@ } } - res := strconv.FormatFloat(float64(s), 'f', prec, 64) + var b strings.Builder + b.WriteString(strconv.FormatFloat(float64(s), 'f', prec, 64)) if st.Flag(' ') { - res += " " + b.WriteString(" ") } - res += "%" + b.WriteString("%") if w, ok := st.Width(); ok { - if len(res) < w { - pad := strings.Repeat(" ", w-len(res)) + if l := b.Len(); l < w { + pad := strings.Repeat(" ", w-l) if st.Flag('-') { - res += pad + b.WriteString(pad) } else { - res = pad + res + tmp := b.String() + b.Reset() + b.WriteString(pad) + b.WriteString(tmp) } } } - io.WriteString(st, res) + io.WriteString(st, b.String()) } // Percentage returns percentage decorator. It's a wrapper of NewPercentage. @@ -66,6 +70,9 @@ wc = widthConf } wc.Init() + if fmt == "" { + fmt = "% d" + } d := &percentageDecorator{ WC: wc, fmt: fmt, diff --git a/decor/speed.go b/decor/speed.go index 679c683..e90b0ff 100644 --- a/decor/speed.go +++ b/decor/speed.go @@ -40,8 +40,10 @@ wc = widthConf } wc.Init() - switch unit { - case UnitKiB, UnitKB: + if fmt == "" { + fmt = "%.0f" + } + if unit > 0 { fmt += "/s" } d := &movingAverageSpeed{ @@ -130,8 +132,10 @@ wc = widthConf } wc.Init() - switch unit { - case UnitKiB, UnitKB: + if fmt == "" { + fmt = "%.0f" + } + if unit > 0 { fmt += "/s" } d := &averageSpeed{ diff --git a/decor/speed_test.go b/decor/speed_test.go index 1f8a69f..4f16aea 100644 --- a/decor/speed_test.go +++ b/decor/speed_test.go @@ -15,6 +15,14 @@ expected string }{ { + name: "empty fmt", + unit: UnitKiB, + fmt: "", + current: 0, + elapsed: time.Second, + expected: "0b/s", + }, + { name: "UnitKiB:%d:0b", unit: UnitKiB, fmt: "%d", @@ -135,6 +143,14 @@ expected string }{ { + name: "empty fmt", + unit: UnitKB, + fmt: "", + current: 0, + elapsed: time.Second, + expected: "0b/s", + }, + { name: "UnitKB:%d:0b", unit: UnitKB, fmt: "%d",