example/src/sqwl/cms/Content.scala
changeset 4 1a1347e8c5be
child 7 50a354e5bda4
equal deleted inserted replaced
3:48479e4b89d4 4:1a1347e8c5be
       
     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 }