pretty print vs cumulative
cicd / ci (push) Successful in 1m52s Details

main
Bel LaPointe 2024-12-12 22:56:29 -07:00
parent 1a517eb8f2
commit 37f6f47375
1 changed files with 13 additions and 25 deletions

View File

@ -88,7 +88,7 @@ func Main() {
balances = balances.NotLike(notLikePattern)
}
FPrintBalances(os.Stdout, "", balances)
FPrintBalances(os.Stdout, "", balances, nil)
case "reg":
transactions := deltas.Transactions()
likes := []ledger.Like{}
@ -123,27 +123,7 @@ func Main() {
}
if shouldPrint {
fmt.Printf("%s\t%s\n", transaction[0].Date, transaction[0].Description)
FPrintBalances(os.Stdout, "\t\t", balances)
cumulativeBalances := transactions[:i+1].Deltas().Like(likes...).Balances()
cumulativeBalancesKeys := []string{}
for k := range cumulativeBalances {
cumulativeBalancesKeys = append(cumulativeBalancesKeys, k)
}
slices.Sort(cumulativeBalancesKeys)
relevantCumulativeBalances := make(ledger.Balances)
for _, k := range cumulativeBalancesKeys {
m, ok := balances[k]
if !ok {
continue
}
relevantCumulativeBalances[k] = make(ledger.Balance)
for k2 := range m {
relevantCumulativeBalances[k][k2] = cumulativeBalances[k][k2]
}
}
fmt.Printf("\t\t(%+v)\n", relevantCumulativeBalances.Nonzero())
FPrintBalances(os.Stdout, "\t\t", balances, transactions[:i+1].Deltas().Like(likes...).Balances())
}
}
default:
@ -151,7 +131,7 @@ func Main() {
}
}
func FPrintBalances(w io.Writer, linePrefix string, balances ledger.Balances) {
func FPrintBalances(w io.Writer, linePrefix string, balances, cumulatives ledger.Balances) {
keys := []string{}
for k := range balances {
keys = append(keys, k)
@ -165,7 +145,7 @@ func FPrintBalances(w io.Writer, linePrefix string, balances ledger.Balances) {
}
}
format := fmt.Sprintf("%s%%-%ds\t%%s%%.2f\n", linePrefix, max)
format := fmt.Sprintf("%s%%-%ds\t%%s%%.2f (%%s%%.2f)\n", linePrefix, max)
for _, key := range keys {
currencies := []ledger.Currency{}
for currency := range balances[key] {
@ -178,7 +158,15 @@ func FPrintBalances(w io.Writer, linePrefix string, balances ledger.Balances) {
if printableCurrency != "$" {
printableCurrency += " "
}
fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency])
cumulative := balances[key][currency]
if balance, ok := cumulatives[key]; !ok {
} else if value, ok := balance[currency]; !ok {
} else {
cumulative = value
}
fmt.Fprintf(w, format, key, printableCurrency, balances[key][currency], printableCurrency, cumulative)
}
}
}