Don’t show line breaks in post excerpts.
[Sone.git] / src / main / java / net / pterodactylus / sone / template / ParserFilter.java
index 5f6fd3e..332f504 100644 (file)
@@ -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;
        }
 
 }