Abbreviate excerpts on the last space.
[Sone.git] / src / main / java / net / pterodactylus / sone / template / ParserFilter.java
index 5f156f1..75eff8b 100644 (file)
@@ -249,7 +249,13 @@ public class ParserFilter implements Filter {
                        for (Part part : parts) {
                                excerpt.append(part.getText());
                                if (excerpt.length() > 20) {
-                                       excerpt.setLength(20);
+                                       int lastSpace = excerpt.lastIndexOf(" ", 20);
+                                       if (lastSpace > -1) {
+                                               excerpt.setLength(lastSpace);
+                                       } else {
+                                               excerpt.setLength(20);
+                                       }
+                                       excerpt.append("…");
                                        break;
                                }
                        }
@@ -282,26 +288,4 @@ public class ParserFilter implements Filter {
                linkTemplate.render(templateContext, writer);
        }
 
-       //
-       // 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) {
-               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 filteredText;
-       }
-
 }