diff --git a/src/ledger/file.go b/src/ledger/file.go index 98642ea..fe48b8d 100644 --- a/src/ledger/file.go +++ b/src/ledger/file.go @@ -143,11 +143,13 @@ func (files Files) Add(payee string, delta Delta) error { } func (files Files) append(s string) error { - if err := files.trimTrainlingWhitespace(); err != nil { + p := path.Join(path.Dir(files.paths()[0]), "inbox.txt") + + if err := files.trimTrailingWhitespace(p); err != nil { return err } - f, err := os.OpenFile(string(files.paths()[0]), os.O_APPEND|os.O_CREATE|os.O_WRONLY, os.ModePerm) + f, err := os.OpenFile(p, os.O_APPEND|os.O_CREATE|os.O_WRONLY, os.ModePerm) if err != nil { return err } @@ -157,8 +159,8 @@ func (files Files) append(s string) error { return f.Close() } -func (files Files) trimTrainlingWhitespace() error { - idx, err := files._lastNonWhitespacePos() +func (files Files) trimTrailingWhitespace(p string) error { + idx, err := files._lastNonWhitespacePos(p) if err != nil { return err } @@ -166,7 +168,7 @@ func (files Files) trimTrainlingWhitespace() error { return nil } - f, err := os.OpenFile(string(files.paths()[0]), os.O_CREATE|os.O_WRONLY, os.ModePerm) + f, err := os.OpenFile(p, os.O_CREATE|os.O_WRONLY, os.ModePerm) if err != nil { return err } @@ -175,8 +177,8 @@ func (files Files) trimTrainlingWhitespace() error { return f.Truncate(int64(idx + 1)) } -func (files Files) _lastNonWhitespacePos() (int, error) { - f, err := os.Open(string(files.paths()[0])) +func (files Files) _lastNonWhitespacePos(p string) (int, error) { + f, err := os.Open(p) if os.IsNotExist(err) { return -1, nil } diff --git a/src/ledger/file_test.go b/src/ledger/file_test.go index ed09328..fd689f5 100644 --- a/src/ledger/file_test.go +++ b/src/ledger/file_test.go @@ -70,7 +70,7 @@ func TestFileAdd(t *testing.T) { for name, d := range cases { c := d t.Run(name, func(t *testing.T) { - p := path.Join(t.TempDir(), "input") + p := path.Join(t.TempDir(), "inbox.txt") if c.given != nil { if err := os.WriteFile(p, []byte(c.given), os.ModePerm); err != nil { t.Fatal(err) diff --git a/src/ledger/like.go b/src/ledger/like.go index 4cd710c..e856e38 100644 --- a/src/ledger/like.go +++ b/src/ledger/like.go @@ -8,6 +8,12 @@ type Like func(Delta) bool type Likes []Like +func LikeTransaction(delta Delta) Like { + return func(d Delta) bool { + return d.transaction == delta.transaction + } +} + func LikeBefore(date string) Like { return func(d Delta) bool { return date >= d.Date