example/src/sqwl/cms/Content.scala
changeset 4 1a1347e8c5be
child 7 50a354e5bda4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/example/src/sqwl/cms/Content.scala	Thu Nov 29 12:20:20 2018 +0100
@@ -0,0 +1,56 @@
+
+package sqwl.cms
+
+import java.nio.file.{FileSystems, Path, Paths}
+
+import akka.stream.scaladsl.FileIO
+import enumeratum.EnumEntry.Hyphencase
+import enumeratum._
+
+import scala.io.Source
+
+sealed abstract class Category(val name: String) extends EnumEntry with iCategory with Hyphencase {
+  override def pathSegment: String = entryName
+}
+
+object Category extends Enum[Category] {
+  val values = findValues
+  case object Cat1 extends Category("Category 1")
+  case object Cat2 extends Category("Category 2")
+}
+
+sealed abstract class Article(val title: String,
+  val category: Option[iCategory],
+  val tags: Seq[iTag],
+
+) extends EnumEntry with iArticle with Hyphencase {
+  override def htmlContent: String = {
+    val src = Source.fromFile(s"example/content/${entryName}.html", "UTF-8")
+    try {
+      src.getLines.mkString
+    } catch {
+      case _: Throwable => ""
+    } finally {
+      src.close()
+    }
+  }
+
+  override def assets: Path = Paths.get(s"example/content/${entryName}")
+  override def pathSegment: String = entryName
+}
+
+object Article extends Enum[Article] {
+  import Category._
+  val values = findValues
+  case object A1 extends Article("Article 1", Some(Cat1), Seq())
+}
+
+object Content extends iContent {
+  def articlesByTag(t: iTag): Seq[iArticle] = Seq()
+  def articlesByCategory(c: iCategory): Seq[iArticle] = Seq()
+  def tags: Seq[iTag] = Seq()
+  def categories: Seq[iCategory] = Category.values
+  def articleByPath(path: String): Option[iArticle] = Article.withNameOption(path)
+  def categoryByPath(path: String): Option[iCategory] = Category.withNameOption(path)
+  def tagByPath(path: String): Option[iTag] = None
+}
\ No newline at end of file