From fb1ddc72c32d803840db039faba57e03550deb65 Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Thu, 3 Apr 2025 11:53:33 -0600 Subject: [PATCH] ledger.Balances accept Like, Group kinda --- src/ledger/balances.go | 28 ++++++++++++++++++++++++++++ src/ledger/bpi_test.go | 8 ++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/ledger/balances.go b/src/ledger/balances.go index dd61694..5bc213c 100644 --- a/src/ledger/balances.go +++ b/src/ledger/balances.go @@ -46,6 +46,34 @@ func (balances Balances) NotLike(pattern string) Balances { return result } +func (balances Balances) KindaLike(like Like) Balances { + ks := []string{} + for k := range balances { + ks = append(ks, k) + } + sort.Strings(ks) + + result := make(Balances) + for _, k := range ks { + v := balances[k] + if like(v.kinda(k)) { + result[k] = maps.Clone(v) + } + } + return result +} + +func (b Balance) kinda(k string) Delta { + return Delta{ + Date: time.Now().Format("2006-01-02"), + Name: k, + Value: b[USD], + Description: k, + Transaction: k, + Payee: false, + } +} + func (balances Balances) Like(pattern string) Balances { result := make(Balances) p := regexp.MustCompile(pattern) diff --git a/src/ledger/bpi_test.go b/src/ledger/bpi_test.go index 6137b50..385ba1b 100644 --- a/src/ledger/bpi_test.go +++ b/src/ledger/bpi_test.go @@ -157,16 +157,16 @@ P 2023-10-22 07:33:56 GME $17.18 t.Fatal(err) } - if got := got["USDC"].Lookup("2099-01-01"); got != 0 { + if got := got["USDC"].Lookup("2099-01-01"); got != nil { t.Error("default got != 0:", got) } - if got := got["GME"].Lookup("2099-01-01"); got != 17.18 { + if got := got["GME"].Lookup("2099-01-01"); got == nil || *got != 17.18 { t.Errorf("shouldve returned latest but got %v", got) } - if got := got["GME"].Lookup("2023-09-19"); got != 18.22 { + if got := got["GME"].Lookup("2023-09-19"); got == nil || *got != 18.22 { t.Errorf("shouldve returned one day before but got %v", got) } - if got := got["GME"].Lookup("2023-09-18"); got != 18.22 { + if got := got["GME"].Lookup("2023-09-18"); got == nil || *got != 18.22 { t.Errorf("shouldve returned day of but got %v", got) } t.Log(got)