♻️ Move constants out of the class
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / template / LinkedElementRenderFilter.kt
index e15f68b..1ecc0dd 100644 (file)
@@ -1,11 +1,10 @@
 package net.pterodactylus.sone.template
 
 import net.pterodactylus.sone.core.LinkedElement
+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
 
@@ -14,14 +13,6 @@ import javax.inject.Inject
  */
 class LinkedElementRenderFilter @Inject constructor(private val templateContextFactory: TemplateContextFactory): Filter {
 
-       companion object {
-               private val loadedImageTemplate = """<%include linked/image.html>""".parse()
-               private val loadedHtmlPageTemplate = """<%include linked/html-page.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)
@@ -34,8 +25,7 @@ class LinkedElementRenderFilter @Inject constructor(private val templateContextF
                        StringWriter().use {
                                val templateContext = templateContextFactory.createTemplateContext()
                                templateContext["link"] = linkedElement.link
-                               loadedImageTemplate.render(templateContext, it)
-                               it
+                               it.also { loadedImageTemplate.render(templateContext, it) }
                        }.toString()
 
        private fun renderHtmlPage(linkedElement: LinkedElement) =
@@ -51,8 +41,11 @@ class LinkedElementRenderFilter @Inject constructor(private val templateContextF
                        StringWriter().use {
                                val templateContext = templateContextFactory.createTemplateContext()
                                templateContext["link"] = linkedElement.link
-                               notLoadedImageTemplate.render(templateContext, it)
-                               it
+                               it.also { notLoadedImageTemplate.render(templateContext, it) }
                        }.toString()
 
 }
+
+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()