X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FParserFilter.java;h=632af02f2613bd9b67c01fc8aec3615f2aca44be;hb=b1ad350c14abb8614913ef0ff0a64eeb1f402934;hp=02d12f0d6012a0175d2471ebe83645dfe71ee7ee;hpb=ab7fada54ed08b0a8d9ce9c606cbea29c3c3f819;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 02d12f0..632af02 100644 --- a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java @@ -106,42 +106,121 @@ public class ParserFilter implements Filter { // PRIVATE METHODS // - private void render(Writer writer, Iterable parts) throws IOException { + /** + * Renders the given parts. + * + * @param writer + * The writer to render the parts to + * @param parts + * The parts to render + */ + private void render(Writer writer, Iterable parts) { for (Part part : parts) { render(writer, part); } } - private void render(Writer writer, Part part) throws IOException { + /** + * Renders the given part. + * + * @param writer + * The writer to render the part to + * @param part + * The part to render + */ + @SuppressWarnings("unchecked") + private void render(Writer writer, Part part) { if (part instanceof PlainTextPart) { render(writer, (PlainTextPart) part); } else if (part instanceof FreenetLinkPart) { render(writer, (FreenetLinkPart) part); + } else if (part instanceof LinkPart) { + render(writer, (LinkPart) part); + } else if (part instanceof SonePart) { + render(writer, (SonePart) part); + } else if (part instanceof PostPart) { + render(writer, (PostPart) part); + } else if (part instanceof Iterable) { + render(writer, (Iterable) part); } } - private void render(Writer writer, PlainTextPart plainTextPart) throws IOException { + /** + * Renders the given plain-text part. + * + * @param writer + * The writer to render the part to + * @param plainTextPart + * The part to render + */ + private void render(Writer writer, PlainTextPart plainTextPart) { TemplateContext templateContext = templateContextFactory.createTemplateContext(); templateContext.set("text", plainTextPart.getText()); plainTextTemplate.render(templateContext, writer); } - private void render(Writer writer, FreenetLinkPart freenetLinkPart) throws IOException { + /** + * Renders the given freenet link part. + * + * @param writer + * The writer to render the part to + * @param freenetLinkPart + * The part to render + */ + private void render(Writer writer, FreenetLinkPart freenetLinkPart) { renderLink(writer, "/" + freenetLinkPart.getLink(), freenetLinkPart.getText(), freenetLinkPart.getTitle(), freenetLinkPart.isTrusted() ? "freenet-trusted" : "freenet"); } - private void render(Writer writer, LinkPart linkPart) throws IOException { + /** + * Renders the given link part. + * + * @param writer + * The writer to render the part to + * @param linkPart + * The part to render + */ + private void render(Writer writer, LinkPart linkPart) { renderLink(writer, "/?_CHECKED_HTTP_=" + linkPart.getLink(), linkPart.getText(), linkPart.getTitle(), "internet"); } - private void render(Writer writer, SonePart sonePart) throws IOException { + /** + * Renders the given Sone part. + * + * @param writer + * The writer to render the part to + * @param sonePart + * The part to render + */ + private void render(Writer writer, SonePart sonePart) { renderLink(writer, "viewSone.html?sone=" + sonePart.getSone().getId(), SoneAccessor.getNiceName(sonePart.getSone()), SoneAccessor.getNiceName(sonePart.getSone()), "in-sone"); } - private void render(Writer writer, PostPart postPart) throws IOException { + /** + * Renders the given post part. + * + * @param writer + * The writer to render the part to + * @param postPart + * The part to render + */ + private void render(Writer writer, PostPart postPart) { renderLink(writer, "viewPost.html?post=" + postPart.getPost().getId(), getExcerpt(postPart.getPost().getText(), 20), SoneAccessor.getNiceName(postPart.getPost().getSone()), "in-sone"); } + /** + * Renders the given link. + * + * @param writer + * The writer to render the link to + * @param link + * The link to render + * @param text + * The text of the link + * @param title + * The title of the link + * @param cssClass + * The CSS class of the link + */ private void renderLink(Writer writer, String link, String text, String title, String cssClass) { TemplateContext templateContext = templateContextFactory.createTemplateContext(); templateContext.set("cssClass", cssClass); @@ -155,6 +234,16 @@ public class ParserFilter implements Filter { // STATIC METHODS // + /** + * Returns up to {@code length} characters from the given text, appending + * “…” if the text is longer. + * + * @param text + * The text to get an excerpt from + * @param length + * The maximum length of the excerpt (without the ellipsis) + * @return The excerpt of the text + */ private static String getExcerpt(String text, int length) { if (text.length() > length) { return text.substring(0, length) + "…";