1 package net.pterodactylus.sone.template
3 import net.pterodactylus.sone.core.ImageLoader
4 import net.pterodactylus.sone.core.LoadedImage
5 import net.pterodactylus.sone.text.FreenetLinkPart
6 import net.pterodactylus.sone.text.Part
7 import net.pterodactylus.util.template.Filter
8 import net.pterodactylus.util.template.TemplateContext
11 * Filter that takes a number of pre-rendered [Part]s and replaces all identified links to freenet images
12 * with [LoadedImage]s.
14 class LinkedImagesFilter(private val imageLoader: ImageLoader) : Filter {
16 @Suppress("UNCHECKED_CAST")
17 override fun format(templateContext: TemplateContext?, data: Any?, parameters: MutableMap<String, Any?>?) =
18 (data as? Iterable<Part>)
19 ?.filterIsInstance<FreenetLinkPart>()
20 ?.mapNotNull { imageLoader.toLoadedImage(it.link) }
21 ?: listOf<LoadedImage>()