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;
} 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";
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 {
* @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;
}
}