export ledger.Likes.Any, .All
parent
68fba6b746
commit
9e613f3a1b
|
|
@ -29,7 +29,7 @@ func main() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
like := []ledger.Like{ledger.LikeName(*likeName)}
|
like := ledger.Likes{ledger.LikeName(*likeName)}
|
||||||
if *likeLedger {
|
if *likeLedger {
|
||||||
like = append(like, ledger.LikeBefore(*likeBefore))
|
like = append(like, ledger.LikeBefore(*likeBefore))
|
||||||
like = append(like, ledger.LikeAfter(*likeAfter))
|
like = append(like, ledger.LikeAfter(*likeAfter))
|
||||||
|
|
@ -47,11 +47,7 @@ func main() {
|
||||||
})
|
})
|
||||||
register := deltas.Register()
|
register := deltas.Register()
|
||||||
for i := range deltas {
|
for i := range deltas {
|
||||||
all := true
|
if like.All(deltas[i]) {
|
||||||
for _, like := range like {
|
|
||||||
all = all && like(deltas[i])
|
|
||||||
}
|
|
||||||
if all {
|
|
||||||
fmt.Printf("%s (%+v)\n", deltas[i].Debug(), register[deltas[i].Date][deltas[i].Name].Debug())
|
fmt.Printf("%s (%+v)\n", deltas[i].Debug(), register[deltas[i].Date][deltas[i].Name].Debug())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ type Deltas []Delta
|
||||||
func (deltas Deltas) Like(like ...Like) Deltas {
|
func (deltas Deltas) Like(like ...Like) Deltas {
|
||||||
result := make(Deltas, 0, len(deltas))
|
result := make(Deltas, 0, len(deltas))
|
||||||
for i := range deltas {
|
for i := range deltas {
|
||||||
if likes(like).all(deltas[i]) {
|
if Likes(like).All(deltas[i]) {
|
||||||
result = append(result, deltas[i])
|
result = append(result, deltas[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import (
|
||||||
|
|
||||||
type Like func(Delta) bool
|
type Like func(Delta) bool
|
||||||
|
|
||||||
type likes []Like
|
type Likes []Like
|
||||||
|
|
||||||
func LikeBefore(date string) Like {
|
func LikeBefore(date string) Like {
|
||||||
return func(d Delta) bool {
|
return func(d Delta) bool {
|
||||||
|
|
@ -30,7 +30,16 @@ func like(pattern string, other string) bool {
|
||||||
return regexp.MustCompile(pattern).MatchString(other)
|
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 {
|
for i := range likes {
|
||||||
if !likes[i](delta) {
|
if !likes[i](delta) {
|
||||||
return false
|
return false
|
||||||
|
|
|
||||||
|
|
@ -29,10 +29,10 @@ func TestLikeName(t *testing.T) {
|
||||||
|
|
||||||
func TestLikesAll(t *testing.T) {
|
func TestLikesAll(t *testing.T) {
|
||||||
delta := Delta{Name: "x"}
|
delta := Delta{Name: "x"}
|
||||||
if likes := (likes{LikeName("^x$")}); !likes.all(delta) {
|
if likes := (Likes{LikeName("^x$")}); !likes.All(delta) {
|
||||||
t.Error(likes.all(delta))
|
t.Error(likes.All(delta))
|
||||||
}
|
}
|
||||||
if likes := (likes{LikeName("^y$")}); likes.all(delta) {
|
if likes := (Likes{LikeName("^y$")}); likes.All(delta) {
|
||||||
t.Error(likes.all(delta))
|
t.Error(likes.All(delta))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue