50 lines
740 B
Go
50 lines
740 B
Go
package ledger
|
|
|
|
import (
|
|
"regexp"
|
|
)
|
|
|
|
type Like func(Delta) bool
|
|
|
|
type Likes []Like
|
|
|
|
func LikeBefore(date string) Like {
|
|
return func(d Delta) bool {
|
|
return date >= d.Date
|
|
}
|
|
}
|
|
|
|
func LikeAfter(date string) Like {
|
|
return func(d Delta) bool {
|
|
return date <= d.Date
|
|
}
|
|
}
|
|
|
|
func LikeName(pattern string) Like {
|
|
return func(d Delta) bool {
|
|
return like(pattern, d.Name)
|
|
}
|
|
}
|
|
|
|
func like(pattern string, other string) bool {
|
|
return regexp.MustCompile(pattern).MatchString(other)
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
return true
|
|
}
|