|
1 |
|
2 package sqwl.cms |
|
3 |
|
4 import java.nio.file.{FileSystems, Path, Paths} |
|
5 |
|
6 import akka.stream.scaladsl.FileIO |
|
7 import enumeratum.EnumEntry.Hyphencase |
|
8 import enumeratum._ |
|
9 |
|
10 import scala.io.Source |
|
11 |
|
12 sealed abstract class Category(val name: String) extends EnumEntry with iCategory with Hyphencase { |
|
13 override def pathSegment: String = entryName |
|
14 } |
|
15 |
|
16 object Category extends Enum[Category] { |
|
17 val values = findValues |
|
18 case object Cat1 extends Category("Category 1") |
|
19 case object Cat2 extends Category("Category 2") |
|
20 } |
|
21 |
|
22 sealed abstract class Article(val title: String, |
|
23 val category: Option[iCategory], |
|
24 val tags: Seq[iTag], |
|
25 |
|
26 ) extends EnumEntry with iArticle with Hyphencase { |
|
27 override def htmlContent: String = { |
|
28 val src = Source.fromFile(s"example/content/${entryName}.html", "UTF-8") |
|
29 try { |
|
30 src.getLines.mkString |
|
31 } catch { |
|
32 case _: Throwable => "" |
|
33 } finally { |
|
34 src.close() |
|
35 } |
|
36 } |
|
37 |
|
38 override def assets: Path = Paths.get(s"example/content/${entryName}") |
|
39 override def pathSegment: String = entryName |
|
40 } |
|
41 |
|
42 object Article extends Enum[Article] { |
|
43 import Category._ |
|
44 val values = findValues |
|
45 case object A1 extends Article("Article 1", Some(Cat1), Seq()) |
|
46 } |
|
47 |
|
48 object Content extends iContent { |
|
49 def articlesByTag(t: iTag): Seq[iArticle] = Seq() |
|
50 def articlesByCategory(c: iCategory): Seq[iArticle] = Seq() |
|
51 def tags: Seq[iTag] = Seq() |
|
52 def categories: Seq[iCategory] = Category.values |
|
53 def articleByPath(path: String): Option[iArticle] = Article.withNameOption(path) |
|
54 def categoryByPath(path: String): Option[iCategory] = Category.withNameOption(path) |
|
55 def tagByPath(path: String): Option[iTag] = None |
|
56 } |