4 import java.nio.file.{FileSystems, Path, Paths} |
4 import java.nio.file.{FileSystems, Path, Paths} |
5 |
5 |
6 import akka.stream.scaladsl.FileIO |
6 import akka.stream.scaladsl.FileIO |
7 import enumeratum.EnumEntry.Hyphencase |
7 import enumeratum.EnumEntry.Hyphencase |
8 import enumeratum._ |
8 import enumeratum._ |
9 |
|
10 import scala.io.Source |
9 import scala.io.Source |
|
10 import scalatags.Text.all._ |
11 |
11 |
12 sealed abstract class Category(val name: String) extends EnumEntry with |
12 sealed abstract class Category(val name: String) extends EnumEntry with |
13 iCategory with Hyphencase { |
13 iCategory with Hyphencase { |
14 override def pathSegment: String = entryName |
14 override def pathSegment: String = entryName |
15 } |
15 } |
39 case object Tag6 extends Tag("Tag 6") |
39 case object Tag6 extends Tag("Tag 6") |
40 } |
40 } |
41 |
41 |
42 sealed abstract class Article(val title: String, |
42 sealed abstract class Article(val title: String, |
43 val category: Option[iCategory], |
43 val category: Option[iCategory], |
44 val tags: Seq[iTag], |
44 val tags: Seq[iTag] = Seq(), |
|
45 val tex: Option[SeqFrag[Frag]] = None |
|
46 ) extends EnumEntry with ScalatexOrFsArticle with Hyphencase { |
45 |
47 |
46 ) extends EnumEntry with FsArticle with Hyphencase { |
48 override protected def content: Either[Path, SeqFrag[Frag]] = tex match { |
|
49 case Some(v) => Right(v) |
|
50 case _ => |
|
51 Left(Paths.get(s"example/content/${entryName}.html")) |
|
52 } |
47 |
53 |
48 override protected def contentPath: Path = Paths.get( |
|
49 s"example/content/${entryName}.html") |
|
50 override def assets: Path = Paths.get(s"example/content/${entryName}") |
54 override def assets: Path = Paths.get(s"example/content/${entryName}") |
51 override def pathSegment: String = entryName |
55 override def pathSegment: String = entryName |
52 } |
56 } |
53 |
57 |
54 object Article extends Enum[Article] { |
58 object Article extends Enum[Article] { |
55 import Category._ |
59 import Category._ |
56 import Tag._ |
60 import Tag._ |
57 val values = findValues |
61 val values = findValues |
58 case object A1 extends Article("Article 1", Some(Cat1), |
62 case object A1 extends Article("Article 1", Some(Cat1), |
59 Seq(Tag1, Tag2, Tag3)) |
63 Seq(Tag1, Tag2, Tag3)) |
60 case object A2 extends Article("Article 2", Some(Cat1), Seq()) |
64 case object A2 extends Article("Article 2", Some(Cat1)) |
61 case object A3 extends Article("Article 3", Some(Cat1), |
65 case object A3 extends Article("Article 3", Some(Cat1), |
62 Seq(Tag4, Tag5)) |
66 Seq(Tag4, Tag5)) |
63 case object A4 extends Article("Article 4", Some(Cat2), Seq(Tag4)) |
67 case object A4 extends Article("Article 4", Some(Cat2), Seq(Tag4)) |
64 case object A5 extends Article("Article 5", Some(Cat2), Seq(Tag5)) |
68 case object A5 extends Article("Article 5", Some(Cat2), Seq(Tag5)) |
|
69 import scalatex._ |
|
70 case object A6 extends Article("Article 6", Some(Cat1), |
|
71 Seq(Tag1), Some(twf("example/content/a6.scalatex"))) |
65 } |
72 } |
66 |
73 |
67 object Content extends iContent { |
74 object Content extends iContent { |
68 |
75 |
69 def appTitle: String = "Content management system example" |
76 def appTitle: String = "Content management system example" |