X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FLinkedElementRenderFilter.kt;h=5cc602c5fc54bae24cd493ac71dd889eba75fafd;hb=97fe04482ebb8a08e43294acde041c2975cbd8ee;hp=200bd83de041de4c369f7051187988cb73fc0b2b;hpb=98c4c698a74b8cc4424a394d12c4f2721dbac136;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 200bd83..5cc602c 100644 --- a/src/main/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilter.kt +++ b/src/main/kotlin/net/pterodactylus/sone/template/LinkedElementRenderFilter.kt @@ -20,34 +20,45 @@ class LinkedElementRenderFilter : Filter { data is LinkedElement && data.loading -> renderNotLoadedLinkedElement(data) data is LinkedElement && data.properties["type"] == "image" -> renderLinkedImage(data) data is LinkedElement && data.properties["type"] == "html" -> renderHtmlPage(data) + data is LinkedElement && data.properties["type"] == "audio" -> renderAudioPlayer(data) else -> null } private fun renderLinkedImage(linkedElement: LinkedElement) = - StringWriter().use { - val templateContext = templateContextFactory.createTemplateContext() + renderTemplate(loadedImageTemplate) { templateContext -> templateContext["link"] = linkedElement.link - it.also { loadedImageTemplate.render(templateContext, it) } - }.toString() + } private fun renderHtmlPage(linkedElement: LinkedElement) = - StringWriter().use { - val templateContext = templateContextFactory.createTemplateContext() + renderTemplate(loadedHtmlPageTemplate) { templateContext -> 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 renderAudioPlayer(linkedElement: LinkedElement) = + renderTemplate(loadedAudioTemplate) { templateContext -> + templateContext["link"] = linkedElement.link + } private fun renderNotLoadedLinkedElement(linkedElement: LinkedElement) = - StringWriter().use { - val templateContext = templateContextFactory.createTemplateContext() + renderTemplate(notLoadedImageTemplate) { templateContext -> templateContext["link"] = linkedElement.link - it.also { notLoadedImageTemplate.render(templateContext, it) } + } + + private fun renderTemplate(template: Template, fillTemplateContext: (TemplateContext) -> Unit) = + StringWriter().use { stringWriter -> + stringWriter.also { + templateContextFactory.createTemplateContext().also { templateContext -> + fillTemplateContext(templateContext) + template.render(templateContext, stringWriter) + } + } }.toString() } private val loadedImageTemplate = """<%include linked/image.html>""".asTemplate() private val loadedHtmlPageTemplate = """<%include linked/html-page.html>""".asTemplate() +private val loadedAudioTemplate = """<%include linked/audio.html>""".asTemplate() private val notLoadedImageTemplate = """<%include linked/notLoaded.html>""".asTemplate()