X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftext%2FSoneTextParser.java;h=39d26dbc6bcde786ea48a0d702cb595005033e10;hp=a279a6daf64ed34f9c246f89a793ef1df9476e85;hb=a21cf1224cebf99f3210883efbf4afb9bd8da87c;hpb=9f476fcc545db4703bad74cf7c3e78e0c57a9eb1 diff --git a/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java b/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java index a279a6d..39d26db 100644 --- a/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java +++ b/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java @@ -26,6 +26,8 @@ import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; @@ -223,7 +225,7 @@ public class SoneTextParser implements Parser { @Nonnull @Override public Iterable parse(@Nonnull String source, @Nullable SoneTextParserContext context) { - PartContainer parts = new PartContainer(); + List parts = new ArrayList<>(); try (Reader sourceReader = new StringReader(source); BufferedReader bufferedReader = new BufferedReader(sourceReader)) { String line; @@ -315,11 +317,11 @@ public class SoneTextParser implements Parser { throw new RuntimeException(ioe1); } for (int partIndex = parts.size() - 1; partIndex >= 0; --partIndex) { - Part part = parts.getPart(partIndex); + Part part = parts.get(partIndex); if (!(part instanceof PlainTextPart) || !"\n".equals(part.getText())) { break; } - parts.removePart(partIndex); + parts.remove(partIndex); } return parts; } @@ -332,13 +334,14 @@ public class SoneTextParser implements Parser { if (nextLink.isPresent()) { if (nextLink.get().getPosition() < earliestLinkPosition) { earliestNextLink = nextLink.get(); + earliestLinkPosition = earliestNextLink.getPosition(); } } } return Optional.fromNullable(earliestNextLink); } - private void renderSoneLink(PartContainer parts, String line) { + private void renderSoneLink(List parts, String line) { if (line.length() >= (7 + 43)) { String soneId = line.substring(7, 50); Optional sone = soneProvider.getSone(soneId); @@ -348,7 +351,7 @@ public class SoneTextParser implements Parser { } } - private void renderPostLink(PartContainer parts, String line) { + private void renderPostLink(List parts, String line) { if (line.length() >= (7 + 36)) { String postId = line.substring(7, 43); Optional post = postProvider.getPost(postId); @@ -362,7 +365,7 @@ public class SoneTextParser implements Parser { } } - private void renderFreenetLink(PartContainer parts, String link, LinkType linkType, @Nullable SoneTextParserContext context) { + private void renderFreenetLink(List parts, String link, LinkType linkType, @Nullable SoneTextParserContext context) { String name = link; String linkWithoutParameters = link; if (name.indexOf('?') > -1) { @@ -394,7 +397,7 @@ public class SoneTextParser implements Parser { } } - private void renderHttpLink(PartContainer parts, String link, LinkType linkType) { + private void renderHttpLink(List parts, String link, LinkType linkType) { String name = link.substring(linkType == LinkType.HTTP ? 7 : 8); int firstSlash = name.indexOf('/'); int lastSlash = name.lastIndexOf('/'); @@ -413,7 +416,7 @@ public class SoneTextParser implements Parser { parts.add(new LinkPart(link, name)); } - private void renderFreemailLink(PartContainer parts, String line) { + private void renderFreemailLink(List parts, String line) { int separator = line.indexOf('@'); String freemailId = line.substring(separator + 1, separator + 53); String identityId = Base64.encode(Base32.decode(freemailId));