predicate.go 457 B

12345678910111213141516171819202122232425262728293031
  1. package predicate
  2. type Predicate func() bool
  3. func All(predicates ...Predicate) Predicate {
  4. return func() bool {
  5. for _, p := range predicates {
  6. if !p() {
  7. return false
  8. }
  9. }
  10. return true
  11. }
  12. }
  13. func Any(predicates ...Predicate) Predicate {
  14. return func() bool {
  15. for _, p := range predicates {
  16. if p() {
  17. return true
  18. }
  19. }
  20. return false
  21. }
  22. }
  23. func Not(predicate Predicate) Predicate {
  24. return func() bool {
  25. return !predicate()
  26. }
  27. }