7 import enumeratum.EnumEntry.Hyphencase |
7 import enumeratum.EnumEntry.Hyphencase |
8 import enumeratum._ |
8 import enumeratum._ |
9 |
9 |
10 import scala.io.Source |
10 import scala.io.Source |
11 |
11 |
12 sealed abstract class Category(val name: String) extends EnumEntry with iCategory with Hyphencase { |
12 sealed abstract class Category(val name: String) extends EnumEntry with |
|
13 iCategory with Hyphencase { |
13 override def pathSegment: String = entryName |
14 override def pathSegment: String = entryName |
14 } |
15 } |
15 |
16 |
16 object Category extends Enum[Category] { |
17 object Category extends Enum[Category] { |
17 val values = findValues |
18 val values = findValues |
18 case object Cat1 extends Category("Category 1") |
19 case object Cat1 extends Category("Category 1") |
19 case object Cat2 extends Category("Category 2") |
20 case object Cat2 extends Category("Category 2") |
|
21 case object Cat3 extends Category("Category 3") |
|
22 case object Cat4 extends Category("Category 4") |
|
23 case object Cat5 extends Category("Category 5") |
|
24 case object Cat6 extends Category("Category 6") |
20 } |
25 } |
21 |
26 |
22 sealed abstract class Article(val title: String, |
27 sealed abstract class Article(val title: String, |
23 val category: Option[iCategory], |
28 val category: Option[iCategory], |
24 val tags: Seq[iTag], |
29 val tags: Seq[iTag], |
41 |
46 |
42 object Article extends Enum[Article] { |
47 object Article extends Enum[Article] { |
43 import Category._ |
48 import Category._ |
44 val values = findValues |
49 val values = findValues |
45 case object A1 extends Article("Article 1", Some(Cat1), Seq()) |
50 case object A1 extends Article("Article 1", Some(Cat1), Seq()) |
|
51 case object A2 extends Article("Article 2", Some(Cat1), Seq()) |
|
52 case object A3 extends Article("Article 3", Some(Cat1), Seq()) |
|
53 case object A4 extends Article("Article 4", Some(Cat2), Seq()) |
|
54 case object A5 extends Article("Article 5", Some(Cat2), Seq()) |
46 } |
55 } |
47 |
56 |
48 object Content extends iContent { |
57 object Content extends iContent { |
49 def appTitle: String = "Content management system example" |
58 def appTitle: String = "Content management system example" |
50 def appTitleShort: String = "CMS" |
59 def appTitleShort: String = "CMS" |
51 def icon = ("icon.png", Paths.get("example/content/public/images/icon.png")) |
60 def icon = |
|
61 ("icon.png", Paths.get("example/content/public/images/icon.png")) |
52 def publicAssets: Path = Paths.get("example/content/public") |
62 def publicAssets: Path = Paths.get("example/content/public") |
53 def styleSheet = ("site.css", Paths.get("example/content/public/css/site.css")) |
63 def styleSheet = |
|
64 ("site.css", Paths.get("example/content/public/css/site.css")) |
54 def articlesByTag(t: iTag): Seq[iArticle] = Seq() |
65 def articlesByTag(t: iTag): Seq[iArticle] = Seq() |
55 def articlesByCategory(c: iCategory): Seq[iArticle] = Seq() |
66 def articlesByCategory(c: iCategory): Seq[iArticle] = Seq() |
56 def tags: Seq[iTag] = Seq() |
67 def tags: Seq[iTag] = Seq() |
57 def categories: Seq[iCategory] = Category.values |
68 def categories: Seq[iCategory] = Category.values |
58 def articleByPath(path: String): Option[iArticle] = Article.withNameOption(path) |
69 def articleByPath(path: String): Option[iArticle] = |
59 def categoryByPath(path: String): Option[iCategory] = Category.withNameOption(path) |
70 Article.withNameOption(path) |
|
71 def categoryByPath(path: String): Option[iCategory] = |
|
72 Category.withNameOption(path) |
60 def tagByPath(path: String): Option[iTag] = None |
73 def tagByPath(path: String): Option[iTag] = None |
61 } |
74 } |