aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/models/Filter.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/reading/models/Filter.scala')
-rw-r--r--src/main/scala/reading/models/Filter.scala11
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 {