Use web package from utils.
[Sone.git] / src / main / java / net / pterodactylus / sone / template / ParserFilter.java
index 2a4d5b4..3494c21 100644 (file)
@@ -35,7 +35,7 @@ import net.pterodactylus.sone.text.PostPart;
 import net.pterodactylus.sone.text.SonePart;
 import net.pterodactylus.sone.text.SoneTextParser;
 import net.pterodactylus.sone.text.SoneTextParserContext;
-import net.pterodactylus.sone.web.page.Page.Request;
+import net.pterodactylus.sone.web.page.FreenetRequest;
 import net.pterodactylus.util.template.Filter;
 import net.pterodactylus.util.template.Template;
 import net.pterodactylus.util.template.TemplateContext;
@@ -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";
@@ -101,7 +108,7 @@ public class ParserFilter implements Filter {
                if (sone == null) {
                        sone = core.getSone(soneKey, false);
                }
-               Request request = (Request) templateContext.get("request");
+               FreenetRequest request = (FreenetRequest) templateContext.get("request");
                SoneTextParserContext context = new SoneTextParserContext(request, sone);
                StringWriter parsedTextWriter = new StringWriter();
                try {
@@ -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;
        }
 
 }