diff -r 48479e4b89d4 -r 1a1347e8c5be example/src/sqwl/cms/Content.scala --- /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