
ossilphant_3.0.0.2.source-code.poll-html-untemplate.scala Maven / Gradle / Ivy
// DO NOT HAND EDIT -- Autogenerated from 'poll.html.untemplate' at 2023-09-25T05:41:50.537129Z
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