export ledger.Likes.Any, .All

main
Bel LaPointe 2023-10-25 07:54:34 -06:00
parent 68fba6b746
commit 9e613f3a1b
4 changed files with 18 additions and 13 deletions

View File

@ -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())
}
}

View File

@ -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])
}
}

View File

@ -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

View File

@ -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))
}
}