X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FRenderFilter.kt;h=0db2a29f6111399c3a34913ed4b390d344f19361;hb=a8b58a357bcd4b12a0f2bd676458e96227986d24;hp=e9992e913d13549592742cf252cec007be24c63b;hpb=de6d73a2f0718ff65832859a3ef7ba4f32299327;p=Sone.git diff --git a/src/main/kotlin/net/pterodactylus/sone/template/RenderFilter.kt b/src/main/kotlin/net/pterodactylus/sone/template/RenderFilter.kt index e9992e9..0db2a29 100644 --- a/src/main/kotlin/net/pterodactylus/sone/template/RenderFilter.kt +++ b/src/main/kotlin/net/pterodactylus/sone/template/RenderFilter.kt @@ -18,7 +18,6 @@ import java.io.StringReader import java.io.StringWriter import java.io.Writer import java.net.URLEncoder -import java.util.ArrayList /** * Renders a number of pre-parsed [Part] into a [String]. @@ -34,49 +33,12 @@ class RenderFilter(private val core: Core, private val templateContextFactory: T override fun format(templateContext: TemplateContext?, data: Any?, parameters: MutableMap?): Any? { @Suppress("UNCHECKED_CAST") - val parts = getPartsToRender(parameters, data as? Iterable ?: return null) + val parts = data as? Iterable ?: return null val parsedTextWriter = StringWriter() render(parsedTextWriter, parts) return parsedTextWriter.toString() } - private fun Map.parseInt(key: String) = this[key]?.toString()?.toInt() - - private fun getPartsToRender(parameters: MutableMap?, parts: Iterable): Iterable { - val length = parameters?.parseInt("length") ?: -1 - val cutOffLength = parameters?.parseInt("cut-off-length") ?: length - if (length > -1) { - var allPartsLength = 0 - val shortenedParts = ArrayList() - for (part in parts) { - if (part is PlainTextPart) { - val longText = part.text - if (allPartsLength < cutOffLength) { - if (allPartsLength + longText.length > cutOffLength) { - shortenedParts.add(PlainTextPart(longText.substring(0, cutOffLength - allPartsLength) + "…")) - } else { - shortenedParts.add(part) - } - } - allPartsLength += longText.length - } else if (part is LinkPart) { - if (allPartsLength < cutOffLength) { - shortenedParts.add(part) - } - allPartsLength += part.text.length - } else { - if (allPartsLength < cutOffLength) { - shortenedParts.add(part) - } - } - } - if (allPartsLength >= length) { - return shortenedParts - } - } - return parts - } - private fun render(writer: Writer, parts: Iterable) { parts.forEach { render(writer, it) } } @@ -90,7 +52,6 @@ class RenderFilter(private val core: Core, private val templateContextFactory: T is SonePart -> render(writer, part) is PostPart -> render(writer, part) is FreemailPart -> render(writer, part) - is Iterable<*> -> render(writer, part as Iterable) } } @@ -108,7 +69,7 @@ class RenderFilter(private val core: Core, private val templateContextFactory: T renderLink(writer, "/external-link/?_CHECKED_HTTP_=${linkPart.link.urlEncode()}", linkPart.text, linkPart.title, "internet") } - private fun String.urlEncode() = URLEncoder.encode(this, "UTF-8")!! + private fun String.urlEncode(): String = URLEncoder.encode(this, "UTF-8") private fun render(writer: Writer, sonePart: SonePart) { if (sonePart.sone.name != null) {