X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FParserFilter.java;h=332f504bbf90273df00f012457fced02242804d7;hb=24d75cd307eddb3b9b94bcc8e343f85cfcc1f7f2;hp=5f6fd3e5790d7f266e5220c357ca5cd8f6c79ba1;hpb=7755990dfedede27bb6422de66e27b484255a1ad;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 5f6fd3e..332f504 100644 --- a/src/main/java/net/pterodactylus/sone/template/ParserFilter.java +++ b/src/main/java/net/pterodactylus/sone/template/ParserFilter.java @@ -93,6 +93,13 @@ public class ParserFilter implements Filter { } catch (NumberFormatException nfe1) { /* ignore. */ } + if ((length == -1) && (parameters.get("length") != null)) { + try { + length = Integer.parseInt(String.valueOf(templateContext.get(parameters.get("length")))); + } catch (NumberFormatException nfe1) { + /* ignore. */ + } + } String soneKey = parameters.get("sone"); if (soneKey == null) { soneKey = "sone"; @@ -114,7 +121,7 @@ public class ParserFilter implements Filter { if (length >= longText.length()) { shortenedParts.add(part); } else { - shortenedParts.add(new PlainTextPart(longText.substring(0, length))); + shortenedParts.add(new PlainTextPart(longText.substring(0, length) + "…")); } length -= longText.length(); } else if (part instanceof LinkPart) { @@ -279,10 +286,11 @@ public class ParserFilter implements Filter { * @return The excerpt of the text */ private static String getExcerpt(String text, int length) { - if (text.length() > length) { - return text.substring(0, length) + "…"; + String filteredText = text.replaceAll("(\r\n)+", "\r\n").replaceAll("\n+", "\n").replace("\r\n", " ").replace('\n', ' '); + if (filteredText.length() > length) { + return filteredText.substring(0, length) + "…"; } - return text; + return filteredText; } }