X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FParserFilter.java;h=53862e3245810f6f63dacb83380448377ca5ca64;hb=5e353316cbd48c7272d41356021edb19d4410894;hp=8833a2d14da6d9171fd1b11fe72425e01a8c03f2;hpb=7f024734546973cd592e6cbf04604705477f15f6;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 8833a2d..53862e3 100644 --- a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java @@ -1,5 +1,5 @@ /* - * Sone - ParserFilter.java - Copyright © 2011–2013 David Roden + * Sone - ParserFilter.java - Copyright © 2011–2015 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -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; @@ -38,7 +41,6 @@ import net.pterodactylus.sone.text.SonePart; import net.pterodactylus.sone.text.SoneTextParser; import net.pterodactylus.sone.text.SoneTextParserContext; import net.pterodactylus.sone.web.page.FreenetRequest; -import net.pterodactylus.util.number.Numbers; import net.pterodactylus.util.template.Filter; import net.pterodactylus.util.template.Template; import net.pterodactylus.util.template.TemplateContext; @@ -89,24 +91,24 @@ public class ParserFilter implements Filter { */ @Override public Object format(TemplateContext templateContext, Object data, Map parameters) { - String text = String.valueOf(data); - int length = Numbers.safeParseInteger(parameters.get("length"), Numbers.safeParseInteger(templateContext.get(String.valueOf(parameters.get("length"))), -1)); - int cutOffLength = Numbers.safeParseInteger(parameters.get("cut-off-length"), Numbers.safeParseInteger(templateContext.get(String.valueOf(parameters.get("cut-off-length"))), 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); + sone = core.getSone((String) sone).orNull(); } 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)); + 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 = ((PlainTextPart) part).getText(); + String longText = part.getText(); if (allPartsLength < cutOffLength) { if ((allPartsLength + longText.length()) > cutOffLength) { shortenedParts.add(new PlainTextPart(longText.substring(0, cutOffLength - allPartsLength) + "…")); @@ -119,7 +121,7 @@ public class ParserFilter implements Filter { if (allPartsLength < cutOffLength) { shortenedParts.add(part); } - allPartsLength += ((LinkPart) part).getText().length(); + allPartsLength += part.getText().length(); } else { if (allPartsLength < cutOffLength) { shortenedParts.add(part); @@ -251,7 +253,7 @@ public class ParserFilter implements Filter { 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())); + Iterable parts = parser.parse(parserContext, postPart.getPost().getText()); StringBuilder excerpt = new StringBuilder(); for (Part part : parts) { excerpt.append(part.getText());