Commit 7f51f80
Changed files (2)
domain
domain/movie_library.go
@@ -48,6 +48,11 @@ func MovieReleasedAfter(year int) Predicate {
return m.Year > year
}
}
+func MovieReleasedBefore(year int) Predicate {
+ return func(m Movie) bool {
+ return m.Year < year
+ }
+}
func (self *MovieLibrary) FindAllMoviesByPixar() []Movie {
return self.FindAll(MovieProducedBy("Pixar"))
@@ -66,9 +71,7 @@ func (self *MovieLibrary) FindAllMoviesPublishedAfter2004() []Movie {
}
func (self *MovieLibrary) FindAllMoviesPublishedBetween1982And2003() []Movie {
- return self.FindAll(func(x Movie) bool {
- return x.Year > 1982 && x.Year < 2003
- })
+ return self.FindAll(MovieReleasedAfter(1982).And(MovieReleasedBefore(2003)))
}
func (self *MovieLibrary) Add(movie Movie) {
domain/predicate.go
@@ -8,6 +8,12 @@ func (self Predicate) Or(other Predicate) Predicate {
}
}
+func (self Predicate) And(other Predicate) Predicate {
+ return func(m Movie) bool {
+ return self(m) && other(m)
+ }
+}
+
func (self Predicate) Not() Predicate {
return func(m Movie) bool {
return !self(m)