X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FParserFilter.java;h=2aafd1fa1993360852384eaa4daef342dbc884a3;hb=616d826774d0ac43e1152ec6a4f5c3c198b95483;hp=db41830f0d16475908e01fd8955aa65fe5a8db43;hpb=d5efb086bee8f103cbe90c7a953ffbb7ff27b689;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 db41830..2aafd1f 100644 --- a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java @@ -17,6 +17,9 @@ package net.pterodactylus.sone.template; +import static java.lang.String.valueOf; +import static net.pterodactylus.sone.utils.NumberParsers.parseInt; + import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; @@ -28,7 +31,9 @@ import java.util.List; import java.util.Map; import net.pterodactylus.sone.core.Core; +import net.pterodactylus.sone.data.Album; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.text.AlbumPart; import net.pterodactylus.sone.text.FreenetLinkPart; import net.pterodactylus.sone.text.LinkPart; import net.pterodactylus.sone.text.Part; @@ -44,9 +49,6 @@ import net.pterodactylus.util.template.TemplateContext; import net.pterodactylus.util.template.TemplateContextFactory; import net.pterodactylus.util.template.TemplateParser; -import com.google.common.base.Optional; -import com.google.common.primitives.Ints; - /** * Filter that filters a given text through a {@link SoneTextParser}. * @@ -91,12 +93,12 @@ public class ParserFilter implements Filter { */ @Override public Object format(TemplateContext templateContext, Object data, Map parameters) { - String text = String.valueOf(data); - int length = Optional.fromNullable(Ints.tryParse(String.valueOf(parameters.get("length")))).or(-1); - int cutOffLength = Optional.fromNullable(Ints.tryParse(String.valueOf(parameters.get("cut-off-length")))).or(length); + String text = valueOf(data); + int length = parseInt(valueOf(parameters.get("length")), -1); + int cutOffLength = parseInt(valueOf(parameters.get("cut-off-length")), length); Object sone = parameters.get("sone"); if (sone instanceof String) { - sone = core.getSone((String) sone, false); + sone = core.getSone((String) sone).orNull(); } FreenetRequest request = (FreenetRequest) templateContext.get("request"); SoneTextParserContext context = new SoneTextParserContext(request, (Sone) sone); @@ -177,6 +179,8 @@ public class ParserFilter implements Filter { render(writer, (SonePart) part); } else if (part instanceof PostPart) { render(writer, (PostPart) part); + } else if (part instanceof AlbumPart) { + render(writer, (AlbumPart) part); } else if (part instanceof Iterable) { render(writer, (Iterable) part); } @@ -250,7 +254,7 @@ public class ParserFilter implements Filter { * The part to render */ private void render(Writer writer, PostPart postPart) { - SoneTextParser parser = new SoneTextParser(core, core); + SoneTextParser parser = new SoneTextParser(core, core, core); SoneTextParserContext parserContext = new SoneTextParserContext(null, postPart.getPost().getSone()); try { Iterable parts = parser.parse(parserContext, new StringReader(postPart.getPost().getText())); @@ -268,12 +272,18 @@ public class ParserFilter implements Filter { break; } } - renderLink(writer, "viewPost.html?post=" + postPart.getPost().getId(), excerpt.toString(), SoneAccessor.getNiceName(postPart.getPost().getSone()), "in-sone"); + renderLink(writer, "viewPost.html?post=" + postPart.getPost().getId(), excerpt.toString(), + SoneAccessor.getNiceName(postPart.getPost().getSone()), postPart.usesDeprecatedLink() ? "internet" : "in-sone"); } catch (IOException ioe1) { /* StringReader shouldn’t throw. */ } } + private void render(Writer writer, AlbumPart albumPart) { + Album album = albumPart.getAlbum(); + renderLink(writer, String.format("imageBrowser.html?album=%s", album.getId()), album.getTitle(), album.getDescription(), "in-sone"); + } + /** * Renders the given link. *