X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FParserFilter.java;h=ac092d8892683e4d7fcf1c44103416573d6e58da;hp=109222e3a52a7161e42d3f0b8889b570a2df644f;hb=8ee3de9a7ed7c65b5f695dd60da6e55d94c1125e;hpb=76ed638264e531a26e35647d13702db865a52321 diff --git a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java index 109222e..ac092d8 100644 --- a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java @@ -101,41 +101,37 @@ public class ParserFilter implements Filter { FreenetRequest request = (FreenetRequest) templateContext.get("request"); SoneTextParserContext context = new SoneTextParserContext(request, (Sone) sone); StringWriter parsedTextWriter = new StringWriter(); - try { - Iterable parts = soneTextParser.parse(context, new StringReader(text)); - if (length > -1) { - int allPartsLength = 0; - List shortenedParts = new ArrayList(); - for (Part part : parts) { - if (part instanceof PlainTextPart) { - String longText = ((PlainTextPart) part).getText(); - if (allPartsLength < cutOffLength) { - if ((allPartsLength + longText.length()) > cutOffLength) { - shortenedParts.add(new PlainTextPart(longText.substring(0, cutOffLength - allPartsLength) + "…")); - } else { - shortenedParts.add(part); - } - } - allPartsLength += longText.length(); - } else if (part instanceof LinkPart) { - if (allPartsLength < cutOffLength) { - shortenedParts.add(part); - } - allPartsLength += ((LinkPart) part).getText().length(); - } else { - if (allPartsLength < cutOffLength) { + Iterable parts = soneTextParser.parse(context, text); + if (length > -1) { + int allPartsLength = 0; + List shortenedParts = new ArrayList(); + for (Part part : parts) { + if (part instanceof PlainTextPart) { + String longText = part.getText(); + if (allPartsLength < cutOffLength) { + if ((allPartsLength + longText.length()) > cutOffLength) { + shortenedParts.add(new PlainTextPart(longText.substring(0, cutOffLength - allPartsLength) + "…")); + } else { shortenedParts.add(part); } } + allPartsLength += longText.length(); + } else if (part instanceof LinkPart) { + if (allPartsLength < cutOffLength) { + shortenedParts.add(part); + } + allPartsLength += part.getText().length(); + } else { + if (allPartsLength < cutOffLength) { + shortenedParts.add(part); + } } - if (allPartsLength >= length) { - parts = shortenedParts; - } } - render(parsedTextWriter, parts); - } catch (IOException ioe1) { - /* no exceptions in a StringReader or StringWriter, ignore. */ + if (allPartsLength >= length) { + parts = shortenedParts; + } } + render(parsedTextWriter, parts); return parsedTextWriter.toString(); } @@ -252,26 +248,22 @@ public class ParserFilter implements Filter { private void render(Writer writer, PostPart postPart) { SoneTextParser parser = new SoneTextParser(core, core); SoneTextParserContext parserContext = new SoneTextParserContext(null, postPart.getPost().getSone()); - try { - Iterable parts = parser.parse(parserContext, new StringReader(postPart.getPost().getText())); - StringBuilder excerpt = new StringBuilder(); - for (Part part : parts) { - excerpt.append(part.getText()); - if (excerpt.length() > 20) { - int lastSpace = excerpt.lastIndexOf(" ", 20); - if (lastSpace > -1) { - excerpt.setLength(lastSpace); - } else { - excerpt.setLength(20); - } - excerpt.append("…"); - break; + Iterable parts = parser.parse(parserContext, postPart.getPost().getText()); + StringBuilder excerpt = new StringBuilder(); + for (Part part : parts) { + excerpt.append(part.getText()); + if (excerpt.length() > 20) { + int lastSpace = excerpt.lastIndexOf(" ", 20); + if (lastSpace > -1) { + excerpt.setLength(lastSpace); + } else { + excerpt.setLength(20); } + excerpt.append("…"); + break; } - renderLink(writer, "viewPost.html?post=" + postPart.getPost().getId(), excerpt.toString(), SoneAccessor.getNiceName(postPart.getPost().getSone()), "in-sone"); - } catch (IOException ioe1) { - /* StringReader shouldn’t throw. */ } + renderLink(writer, "viewPost.html?post=" + postPart.getPost().getId(), excerpt.toString(), SoneAccessor.getNiceName(postPart.getPost().getSone()), "in-sone"); } /**