X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FLinkedElementRenderFilter.kt;h=4536c042309a6e8da3e55e0e616417c833e14617;hb=42d2da43d7a3dd0645e17c4db39252faa20a92d7;hp=6255f9dbf2ed7f24b0d4f7e20b46361786020ed8;hpb=675710fc669a9f5ccfab42296a3aa0b822539e14;p=Sone.git
diff --git a/src/main/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilter.kt b/src/main/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilter.kt
index 6255f9d..4536c04 100644
--- a/src/main/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilter.kt
+++ b/src/main/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilter.kt
@@ -1,47 +1,53 @@
package net.pterodactylus.sone.template
import net.pterodactylus.sone.core.LinkedElement
-import net.pterodactylus.sone.core.LinkedImage
+import net.pterodactylus.sone.utils.asTemplate
import net.pterodactylus.util.template.Filter
import net.pterodactylus.util.template.TemplateContext
import net.pterodactylus.util.template.TemplateContextFactory
-import net.pterodactylus.util.template.TemplateParser
-import java.io.StringReader
import java.io.StringWriter
+import javax.inject.Inject
/**
* Renders all kinds of [LinkedElement]s.
*/
-class LinkedElementRenderFilter(private val templateContextFactory: TemplateContextFactory) : Filter {
+class LinkedElementRenderFilter @Inject constructor(private val templateContextFactory: TemplateContextFactory): Filter {
companion object {
- private val loadedImageTemplate = """""".parse()
- private val notLoadedImageTemplate = """""".parse()
-
- private fun String.parse() = StringReader(this).use { TemplateParser.parse(it) }
+ private val loadedImageTemplate = """<%include linked/image.html>""".asTemplate()
+ private val loadedHtmlPageTemplate = """<%include linked/html-page.html>""".asTemplate()
+ private val notLoadedImageTemplate = """<%include linked/notLoaded.html>""".asTemplate()
}
override fun format(templateContext: TemplateContext?, data: Any?, parameters: Map?) =
when {
data is LinkedElement && data.loading -> renderNotLoadedLinkedElement(data)
- data is LinkedImage -> renderLinkedImage(data)
+ data is LinkedElement && data.properties["type"] == "image" -> renderLinkedImage(data)
+ data is LinkedElement && data.properties["type"] == "html" -> renderHtmlPage(data)
else -> null
}
- private fun renderLinkedImage(linkedImage: LinkedImage) =
+ private fun renderLinkedImage(linkedElement: LinkedElement) =
StringWriter().use {
val templateContext = templateContextFactory.createTemplateContext()
- templateContext["link"] = linkedImage.link
- loadedImageTemplate.render(templateContext, it)
- it
+ templateContext["link"] = linkedElement.link
+ it.also { loadedImageTemplate.render(templateContext, it) }
+ }.toString()
+
+ private fun renderHtmlPage(linkedElement: LinkedElement) =
+ StringWriter().use {
+ val templateContext = templateContextFactory.createTemplateContext()
+ templateContext["link"] = linkedElement.link
+ templateContext["title"] = linkedElement.properties["title"] ?: "No title"
+ templateContext["description"] = linkedElement.properties["description"] ?: "No description"
+ it.also { loadedHtmlPageTemplate.render(templateContext, it) }
}.toString()
private fun renderNotLoadedLinkedElement(linkedElement: LinkedElement) =
StringWriter().use {
val templateContext = templateContextFactory.createTemplateContext()
templateContext["link"] = linkedElement.link
- notLoadedImageTemplate.render(templateContext, it)
- it
+ it.also { notLoadedImageTemplate.render(templateContext, it) }
}.toString()
}