From 9b4accafe30833416984e2ba7ac51ee7ef2245d4 Mon Sep 17 00:00:00 2001 From: bel Date: Sun, 6 Apr 2025 10:38:54 -0600 Subject: [PATCH] neater bal print --- cmd/cli/main.go | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 3a6ecec..2bd347b 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -158,7 +158,25 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger if normalized { format = fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%%s%%.2f (%%.2f @%%.2f (%%s%%.0f)))\n", linePrefix, max) } - for _, key := range keys { + for i, key := range keys { + printableKey := key + if i > 0 { + j := 0 + n := len(keys[i]) + if n2 := len(keys[i-1]); n2 < n { + n = n2 + } + for j = 0; j < n; j++ { + if keys[i-1][j] != keys[i][j] { + break + } + } + for keys[i][j] != ':' && j > 0 { + j -= 1 + } + printableKey = strings.Repeat(" ", j) + keys[i][j:] + } + currencies := []ledger.Currency{} for currency := range balances[key] { currencies = append(currencies, currency) @@ -182,11 +200,11 @@ func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger } if !normalized { - fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency], printableCurrency, cumulative) + fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative) } else { factor := normalizer.NormalizeFactor(ledger.Delta{Name: key, Date: date}) trailingMax := maxes[currency] - math.Abs(balances[key][currency]) - fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency], printableCurrency, cumulative, cumulative*factor, factor, printableCurrency, factor*trailingMax) + fmt.Fprintf(w, format, printableKey, printableCurrency, balances[key][currency], printableCurrency, cumulative, cumulative*factor, factor, printableCurrency, factor*trailingMax) } } }