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

ossilphant_3.0.0.1.source-code.poll-html-untemplate.scala Maven / Gradle / Ivy

// DO NOT HAND EDIT -- Autogenerated from 'poll.html.untemplate' at 2023-09-24T20:33:20.887197Z
package com.mchange.fossilphant.theme.tower

import java.io.{Writer,StringWriter}
import scala.collection.*

import com.mchange.fossilphant.*



val Untemplate_poll_html = new untemplate.Untemplate[immutable.Seq[Post.PollItem],Nothing]:
  val UntemplateFunction                    : untemplate.Untemplate[immutable.Seq[Post.PollItem],Nothing] = this
  val UntemplateName                        : String = "poll_html"
  val UntemplatePackage                     : String = "com.mchange.fossilphant.theme.tower"
  val UntemplateInputName                   : String = "pollItems"
  val UntemplateInputTypeDeclared           : String = "immutable.Seq[Post.PollItem]"
  val UntemplateInputTypeCanonical          : Option[String] = untemplate.Macro.nonEmptyStringOption( untemplate.Macro.recursiveCanonicalName[immutable.Seq[Post.PollItem]] )
  val UntemplateInputDefaultArgument        : Option[immutable.Seq[Post.PollItem]] = (None : Option[immutable.Seq[Post.PollItem]])
  val UntemplateOutputMetadataTypeDeclared  : String = "Nothing"
  val UntemplateOutputMetadataTypeCanonical : Option[String] = untemplate.Macro.nonEmptyStringOption( untemplate.Macro.recursiveCanonicalName[Nothing] )
  val UntemplateHeaderNote                  : String = ""

  val UntemplateAttributes : immutable.Map[String,Any] = immutable.Map.empty


  def apply(pollItems : immutable.Seq[Post.PollItem]) : untemplate.Result[Nothing] =
    val writer             : StringWriter = new StringWriter(10000)
    val attrs              : immutable.Map[String,Any] = UntemplateAttributes
    var mbMetadata         : Option[Nothing] = None
    var outputTransformer  : Function1[untemplate.Result[Nothing],untemplate.Result[Nothing]] = identity

    // lazy to avoid taking max on an empty seq...
    lazy val winners = // could be a tie!
      val max = pollItems.map( _.count ).max
      pollItems.filter( _.count == max ).toSet
    end winners

    lazy val sum = pollItems.map( _.count ).sum

    def mbWinnerClass( pi : Post.PollItem ) : String =
      if winners(pi) then " winner" else ""
    end mbWinnerClass

    def formattedPercentage( pi : Post.PollItem ) : String =
      val toFormat = (pi.count.toDouble / sum) * 100
      val count = pi.count
      f"""$toFormat%4.1f%%"""
    end formattedPercentage


      val block0 = new Function0[String]:
        def apply() : String =
          "\n"
      writer.write(block0())

      if pollItems.nonEmpty then {
        val block1 = new Function0[String]:
          def apply() : String =
            "    
\n" writer.write(block1()) pollItems.foreach { pollItem => val block2 = new Function0[String]: def apply() : String = "
\n
" + ( formattedPercentage( pollItem ) ) + "
\n
" + ( pollItem.text ) + "
\n
(" + ( pollItem.count ) + " votes)
\n
\n" writer.write(block2()) } val block3 = new Function0[String]: def apply() : String = "
\n" writer.write(block3()) } outputTransformer( untemplate.Result( mbMetadata, writer.toString ) ) end apply end Untemplate_poll_html def poll_html(pollItems : immutable.Seq[Post.PollItem]) : untemplate.Result[Nothing] = Untemplate_poll_html( pollItems )




© 2015 - 2025 Weber Informatics LLC | Privacy Policy