diff --git a/cmd/clitest/main.go b/cmd/clitest/main.go index 444ae0e..01c096f 100644 --- a/cmd/clitest/main.go +++ b/cmd/clitest/main.go @@ -29,7 +29,7 @@ func main() { if err != nil { panic(err) } - like := []ledger.Like{ledger.LikeName(*likeName)} + like := ledger.Likes{ledger.LikeName(*likeName)} if *likeLedger { like = append(like, ledger.LikeBefore(*likeBefore)) like = append(like, ledger.LikeAfter(*likeAfter)) @@ -47,11 +47,7 @@ func main() { }) register := deltas.Register() for i := range deltas { - all := true - for _, like := range like { - all = all && like(deltas[i]) - } - if all { + if like.All(deltas[i]) { fmt.Printf("%s (%+v)\n", deltas[i].Debug(), register[deltas[i].Date][deltas[i].Name].Debug()) } } diff --git a/ledger/deltas.go b/ledger/deltas.go index 4e779e1..cb6a097 100644 --- a/ledger/deltas.go +++ b/ledger/deltas.go @@ -7,7 +7,7 @@ type Deltas []Delta func (deltas Deltas) Like(like ...Like) Deltas { result := make(Deltas, 0, len(deltas)) for i := range deltas { - if likes(like).all(deltas[i]) { + if Likes(like).All(deltas[i]) { result = append(result, deltas[i]) } } diff --git a/ledger/like.go b/ledger/like.go index 4461801..4cd710c 100644 --- a/ledger/like.go +++ b/ledger/like.go @@ -6,7 +6,7 @@ import ( type Like func(Delta) bool -type likes []Like +type Likes []Like func LikeBefore(date string) Like { return func(d Delta) bool { @@ -30,7 +30,16 @@ func like(pattern string, other string) bool { return regexp.MustCompile(pattern).MatchString(other) } -func (likes likes) all(delta Delta) bool { +func (likes Likes) Any(delta Delta) bool { + for i := range likes { + if likes[i](delta) { + return true + } + } + return false +} + +func (likes Likes) All(delta Delta) bool { for i := range likes { if !likes[i](delta) { return false diff --git a/ledger/like_test.go b/ledger/like_test.go index 6ad6325..6ac85ce 100644 --- a/ledger/like_test.go +++ b/ledger/like_test.go @@ -29,10 +29,10 @@ func TestLikeName(t *testing.T) { func TestLikesAll(t *testing.T) { delta := Delta{Name: "x"} - if likes := (likes{LikeName("^x$")}); !likes.all(delta) { - t.Error(likes.all(delta)) + if likes := (Likes{LikeName("^x$")}); !likes.All(delta) { + t.Error(likes.All(delta)) } - if likes := (likes{LikeName("^y$")}); likes.all(delta) { - t.Error(likes.all(delta)) + if likes := (Likes{LikeName("^y$")}); likes.All(delta) { + t.Error(likes.All(delta)) } }