X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftext%2FSoneTextParser.java;h=9754ac423ff28329a4fe5a56d12f878e7f3bfb82;hb=ff0ba9cb343bb7b006ff5f859ef46e165a4bc29f;hp=6336934bce6fe7b148c5adf34b72923cff86f707;hpb=ab7fada54ed08b0a8d9ce9c606cbea29c3c3f819;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java b/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java index 6336934..9754ac4 100644 --- a/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java +++ b/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java @@ -20,23 +20,17 @@ package net.pterodactylus.sone.text; import java.io.BufferedReader; import java.io.IOException; import java.io.Reader; -import java.io.StringReader; -import java.io.Writer; import java.net.MalformedURLException; -import java.util.Iterator; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; -import net.pterodactylus.sone.core.Core; +import net.pterodactylus.sone.core.PostProvider; +import net.pterodactylus.sone.core.SoneProvider; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.Sone; -import net.pterodactylus.sone.template.SoneAccessor; import net.pterodactylus.util.logging.Logging; -import net.pterodactylus.util.template.Template; -import net.pterodactylus.util.template.TemplateContextFactory; -import net.pterodactylus.util.template.TemplateParser; import freenet.keys.FreenetURI; /** @@ -85,17 +79,23 @@ public class SoneTextParser implements Parser { } - /** The core. */ - private final Core core; + /** The Sone provider. */ + private final SoneProvider soneProvider; + + /** The post provider. */ + private final PostProvider postProvider; /** * Creates a new freenet link parser. * - * @param core - * The core + * @param soneProvider + * The Sone provider + * @param postProvider + * The post provider */ - public SoneTextParser(Core core) { - this.core = core; + public SoneTextParser(SoneProvider soneProvider, PostProvider postProvider) { + this.soneProvider = soneProvider; + this.postProvider = postProvider; } // @@ -181,8 +181,8 @@ public class SoneTextParser implements Parser { } if (line.length() >= (next + 7 + 43)) { String soneId = line.substring(next + 7, next + 50); - Sone sone = core.getSone(soneId, false); - if (sone != null) { + Sone sone = soneProvider.getSone(soneId, false); + if ((sone != null) && (sone.getName() != null)) { parts.add(new SonePart(sone)); } else { parts.add(new PlainTextPart(line.substring(next, next + 50))); @@ -200,7 +200,7 @@ public class SoneTextParser implements Parser { } if (line.length() >= (next + 7 + 36)) { String postId = line.substring(next + 7, next + 43); - Post post = core.getPost(postId, false); + Post post = postProvider.getPost(postId, false); if ((post != null) && (post.getSone() != null)) { String postText = post.getText(); postText = postText.substring(0, Math.min(postText.length(), 20)) + "…"; @@ -225,7 +225,9 @@ public class SoneTextParser implements Parser { if (!lastLineEmpty && lineComplete) { parts.add(new PlainTextPart("\n" + line.substring(0, next))); } else { - parts.add(new PlainTextPart(line.substring(0, next))); + if (next > 0) { + parts.add(new PlainTextPart(line.substring(0, next))); + } } String link = line.substring(next, nextSpace); String name = link; @@ -249,7 +251,7 @@ public class SoneTextParser implements Parser { if (name == null) { name = link.substring(0, Math.min(9, link.length())); } - boolean fromPostingSone = ((linkType == LinkType.SSK) || (linkType == LinkType.USK)) && (context.getPostingSone() != null) && link.substring(4, Math.min(link.length(), 47)).equals(context.getPostingSone().getId()); + boolean fromPostingSone = ((linkType == LinkType.SSK) || (linkType == LinkType.USK)) && (context != null) && (context.getPostingSone() != null) && link.substring(4, Math.min(link.length(), 47)).equals(context.getPostingSone().getId()); parts.add(new FreenetLinkPart(link, name, fromPostingSone)); } catch (MalformedURLException mue1) { /* not a valid link, insert as plain text. */ @@ -294,7 +296,7 @@ public class SoneTextParser implements Parser { } for (int partIndex = parts.size() - 1; partIndex >= 0; --partIndex) { Part part = parts.getPart(partIndex); - if ((part instanceof PlainTextPart) && !"\n".equals(((PlainTextPart) part).getText())) { + if (!(part instanceof PlainTextPart) || !"\n".equals(((PlainTextPart) part).getText())) { break; } parts.removePart(partIndex);