diff options
Diffstat (limited to 'src/main/scala/reading/models/Filter.scala')
-rw-r--r-- | src/main/scala/reading/models/Filter.scala | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main/scala/reading/models/Filter.scala b/src/main/scala/reading/models/Filter.scala index c4836bb..5e96cf9 100644 --- a/src/main/scala/reading/models/Filter.scala +++ b/src/main/scala/reading/models/Filter.scala @@ -7,8 +7,10 @@ trait Filter { } sealed trait FilterKind +case object PeriodKind extends FilterKind case object ThemeKind extends FilterKind case object GenreKind extends FilterKind +case object DifficultyKind extends FilterKind object Filter { def apply[T](in: T)(implicit filterFactory: FilterFactory[T]): Filter = @@ -26,6 +28,15 @@ trait FilterFactory[T] { } object FilterFactory { + implicit object PeriodFilter extends FilterFactory[Period] { + def create(period: Period): Filter = + new Filter { + def filter(book: Book): Boolean = book.period == period + val kind: FilterKind = PeriodKind + val name: String = period.toString() + } + } + implicit object ThemeFilter extends FilterFactory[Theme] { def create(theme: Theme): Filter = new Filter { |