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 appTitle: String = "Kvalita pracovního života - studie"
def appTitleShort: String = "KPŽ - studie"
def icon = ("icon.png", Paths.get("example/content/public/images/icon.png"))
def publicAssets: Path = Paths.get("example/content/public")
def styleSheet = ("site.css", Paths.get("example/content/public/css/site.css"))
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
}