From bece66b5b3bca8467b720d17aa792f398eddbaac Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Wed, 25 Oct 2023 06:38:51 -0600 Subject: [PATCH] debugs --- cmd/clitest/main.go | 10 ++++++++++ ledger/balances.go | 30 ++++++++++++++++++++++++++++++ ledger/deltas.go | 6 +++--- 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 ledger/balances.go diff --git a/cmd/clitest/main.go b/cmd/clitest/main.go index e236a52..bd1e56b 100644 --- a/cmd/clitest/main.go +++ b/cmd/clitest/main.go @@ -3,6 +3,7 @@ package main import ( "flag" "fmt" + "sort" "strings" "gogs.inhome.blapointe.com/ana-ledger/ledger" @@ -30,6 +31,15 @@ func main() { switch *foo { case "reg": + sort.Slice(deltas, func(i, j int) bool { + return deltas[i].Debug() < deltas[j].Debug() + }) + deltasSoFar := make(ledger.Deltas, 0) + for i := range deltas { + deltasSoFar = append(deltasSoFar, deltas[i]) + bal, _ := deltasSoFar.Like(ledger.LikeName("^" + deltas[i].Name + "$")).Balances() + fmt.Printf("%s (%+v)\n", deltas[i].Debug(), bal[deltas[i].Name].Debug()) + } case "bal": balances, err := deltas.Balances() if err != nil { diff --git a/ledger/balances.go b/ledger/balances.go new file mode 100644 index 0000000..db7a043 --- /dev/null +++ b/ledger/balances.go @@ -0,0 +1,30 @@ +package ledger + +import ( + "fmt" + "strings" +) + +type Balances map[string]Balance + +type Balance map[Currency]float64 + +func (balances Balances) Debug() string { + result := []string{} + for k, v := range balances { + result = append(result, fmt.Sprintf("%s:[%s]", k, v.Debug())) + } + return strings.Join(result, " ") +} + +func (balance Balance) Debug() string { + result := []string{} + for k, v := range balance { + if k == USD { + result = append(result, fmt.Sprintf("%s%.2f", k, v)) + } else { + result = append(result, fmt.Sprintf("%.3f %s", v, k)) + } + } + return strings.Join(result, " + ") +} diff --git a/ledger/deltas.go b/ledger/deltas.go index fe43aed..e842795 100644 --- a/ledger/deltas.go +++ b/ledger/deltas.go @@ -12,11 +12,11 @@ func (deltas Deltas) Like(like ...Like) Deltas { return result } -func (deltas Deltas) Balances() (map[string]map[Currency]float64, error) { - result := make(map[string]map[Currency]float64) +func (deltas Deltas) Balances() (Balances, error) { + result := make(Balances) for _, delta := range deltas { if _, ok := result[delta.Name]; !ok { - result[delta.Name] = make(map[Currency]float64) + result[delta.Name] = make(Balance) } if _, ok := result[delta.Name][delta.Currency]; !ok { result[delta.Name][delta.Currency] = 0