All Downloads are FREE. Search and download functionalities are using the official Maven repository.

unstatic.ztapir.ZTBlog.scala Maven / Gradle / Ivy

package unstatic.ztapir

import scala.collection.*
import unstatic.*

import zio.*

trait ZTBlog extends Blog with ZTEndpointBinding.Source:
  type Site <: ZTSite

  private val DefaultFrontPageIdentifiers = immutable.Set("blogFrontPage")

  // you can override this
  def frontPageIdentifiers : immutable.Set[String] = DefaultFrontPageIdentifiers

  // you can override any of these
  val entryFragmentsResolveHashSpecials   = true   // memoization of fragments not supported
  val entryTopLevelResolveHashSpecials    = false
  val entryTopLevelMemoize                = true
  val multipleTopLevelResolveHashSpecials = false
  val multipleTopLevelMemoize             = true

  def mediaDir( resolved : EntryResolved ) : SiteLocation

  def identifiers( resolved : EntryResolved ) : immutable.Set[String] = fqnSuffixes(resolved.entryUntemplate).toSet

  def endpointBindings : immutable.Seq[ZTEndpointBinding] =
    val entryPageBindings =
      entriesResolved.to(Vector).map { resolved =>
        val pl  = permalink( resolved )
        val md  = mediaDir( resolved )
        val ids = identifiers( resolved )
        site.publicReadOnlyHtml(pl, ZIO.attempt( renderSingle(pl,resolved ) ), Some(md.siteRootedPath), ids, entryTopLevelResolveHashSpecials, entryTopLevelMemoize)
      }.toVector
    val frontPageBinding =
      val maxToRender = maxFrontPageEntries.getOrElse( Int.MaxValue )
      site.publicReadOnlyHtml(frontPage, ZIO.attempt( renderTop( frontPage, maxToRender ) ), None, frontPageIdentifiers, multipleTopLevelResolveHashSpecials, multipleTopLevelMemoize)
    entryPageBindings :+ frontPageBinding






© 2015 - 2025 Weber Informatics LLC | Privacy Policy