aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/models/GroupedTheme.scala
blob: f36d7fd7940b3479ef09a52c84e818d437fad213 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package reading.models

import enumeratum._

sealed trait GroupedTheme extends EnumEntry with Ordered[GroupedTheme] {
  import GroupedTheme._

  def compare(that: GroupedTheme): Int =
    Compare.format(this.prettyPrint).compare(Compare.format(that.prettyPrint))

  def prettyPrint(): String = this match {
    case Culture => "culture"
    case Decouverte => "découverte"
    case Histoire => "histoire"
    case Humour => "humour"
    case Stratageme => "stratagème"
    case Peur => "peur"
    case Quotidien => "quotidien"
    case Technologie => "technologie"
    case Violence => "violence"
    case Mort => "mort"
    case Difference => "différence"
    case Imaginaire => "imaginaire"
  }
}

object GroupedTheme extends Enum[GroupedTheme] {
  val values = findValues

  case object Culture extends GroupedTheme
  case object Decouverte extends GroupedTheme
  case object Histoire extends GroupedTheme
  case object Humour extends GroupedTheme
  case object Stratageme extends GroupedTheme
  case object Peur extends GroupedTheme
  case object Quotidien extends GroupedTheme
  case object Technologie extends GroupedTheme
  case object Violence extends GroupedTheme
  case object Mort extends GroupedTheme
  case object Difference extends GroupedTheme
  case object Imaginaire extends GroupedTheme

  def from(theme: Theme): GroupedTheme = {
    import Theme._

    theme match {
      case Art | Americain | Danse | Litterature | Musique | Mythologie | Poetique | Reecriture | Sport => Culture
      case Nature | Aventure | Initiation | Pirate | Voyage | Animal => Decouverte
      case Dragon | Magie => Imaginaire
      case Mutant | Beaute | Handicap | Homosexualite | Laideur | Metamorphose | Marginalite | Migration | Metissage | Pauvrete | Discrimination => Difference
      case Maltraitance | Viol | Combat | Conflit | Crime | Harcelement | Exclusion | Racisme | Antisemitisme | SegregationRaciale | Prison => Violence
      case Chevalerie | Cour | Dictature | Guerre | Nazisme | Revolution => Histoire
      case Theme.Humour => GroupedTheme.Humour
      case Enquete | Manipulation | Mensonge | Secret | Espionnage | Complot => Stratageme
      case Fantome | Folie | Malediction | Vampire | Monstrueux => Peur
      case Suicide | Deuil | Maladie | Immortalite | Vieillesse => Mort
      case Adolescence | Amour | Amitie | Apprentissage | College | Ecole | Emancipation | Sentiment | Sexualite | Enfants | Femme | Parents | Famille => Quotidien
      case Genetique | Internet | JeuVideo | Robot => Technologie
    }
  }
}