package net.pterodactylus.sone.template
import net.pterodactylus.sone.core.LinkedElement
-import net.pterodactylus.sone.core.LinkedImage
import net.pterodactylus.util.template.Filter
import net.pterodactylus.util.template.TemplateContext
import net.pterodactylus.util.template.TemplateContextFactory
class LinkedElementRenderFilter(private val templateContextFactory: TemplateContextFactory) : Filter {
companion object {
- private val loadedImageTemplate = """<a href="/<% link|html>"><span class="linked-element" title="<% link|html>" style="background-image: url('/<% link|html>')"></span></a>""".parse()
- private val notLoadedImageTemplate = """<span class="linked-element" title="<% link|html>" style="background-image: url('images/loading-animation.gif')"></span>""".parse()
+ private val loadedImageTemplate = """<%include linked/image.html>""".parse()
+ private val notLoadedImageTemplate = """<%include linked/notLoaded.html>""".parse()
private fun String.parse() = StringReader(this).use { TemplateParser.parse(it) }
}
override fun format(templateContext: TemplateContext?, data: Any?, parameters: Map<String, Any?>?) =
when {
data is LinkedElement && data.loading -> renderNotLoadedLinkedElement(data)
- data is LinkedImage -> renderLinkedImage(data)
+ data is LinkedElement -> renderLinkedImage(data)
else -> null
}
- private fun renderLinkedImage(linkedImage: LinkedImage) =
+ private fun renderLinkedImage(linkedElement: LinkedElement) =
StringWriter().use {
val templateContext = templateContextFactory.createTemplateContext()
- templateContext["link"] = linkedImage.link
+ templateContext["link"] = linkedElement.link
loadedImageTemplate.render(templateContext, it)
it
}.toString()