X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FParserFilter.java;h=db945b526560d4dcccf2a8c3cf59c1e79d4d196f;hb=eb776984f2bf7c1f218dcc65fca80ef0298ed2f2;hp=6099ee7d0a0e65fd52adf367ebd61d624a256c26;hpb=10e65e7290209c04d6dd9ede70205e33f4ce66c3;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java index 6099ee7..db945b5 100644 --- a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java @@ -21,12 +21,14 @@ import java.io.IOException; import java.io.StringReader; import java.util.Map; +import net.pterodactylus.sone.core.Core; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.text.FreenetLinkParser; import net.pterodactylus.sone.text.FreenetLinkParserContext; -import net.pterodactylus.util.template.DataProvider; +import net.pterodactylus.sone.web.page.Page.Request; import net.pterodactylus.util.template.Filter; -import net.pterodactylus.util.template.TemplateFactory; +import net.pterodactylus.util.template.TemplateContext; +import net.pterodactylus.util.template.TemplateContextFactory; /** * Filter that filters a given text through a {@link FreenetLinkParser}. @@ -35,31 +37,41 @@ import net.pterodactylus.util.template.TemplateFactory; */ public class ParserFilter implements Filter { + /** The core. */ + private final Core core; + /** The link parser. */ private final FreenetLinkParser linkParser; /** - * Creates a new parser filter. + * Creates a new filter that runs its input through a + * {@link FreenetLinkParser}. * - * @param templateFactory - * The template factory for the link parser + * @param core + * The core + * @param templateContextFactory + * The context factory for rendering the parts */ - public ParserFilter(TemplateFactory templateFactory) { - this.linkParser = new FreenetLinkParser(templateFactory); + public ParserFilter(Core core, TemplateContextFactory templateContextFactory) { + this.core = core; + linkParser = new FreenetLinkParser(core, templateContextFactory); } /** * {@inheritDoc} */ @Override - public Object format(DataProvider dataProvider, Object data, Map parameters) { + public Object format(TemplateContext templateContext, Object data, Map parameters) { String text = String.valueOf(data); String soneKey = parameters.get("sone"); if (soneKey == null) { soneKey = "sone"; } - Sone sone = (Sone) dataProvider.get(soneKey); - FreenetLinkParserContext context = new FreenetLinkParserContext(sone); + Sone sone = (Sone) templateContext.get(soneKey); + if (sone == null) { + sone = core.getSone(soneKey, false); + } + FreenetLinkParserContext context = new FreenetLinkParserContext((Request) templateContext.get("request"), sone); try { return linkParser.parse(context, new StringReader(text)); } catch (IOException ioe1) {