X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftext%2FSoneTextParser.java;h=81ac75150a7d31656b7344566e3fd5eddd754380;hp=5356cf76167dfd7b0000826abf468de0683b7468;hb=7b55e0be6a3283e43a9bbab98f82aebdd948eb33;hpb=7d424e80eaf668651a2e2dfa242b75621f5def19 diff --git a/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java b/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java index 5356cf7..81ac751 100644 --- a/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java +++ b/src/main/java/net/pterodactylus/sone/text/SoneTextParser.java @@ -21,6 +21,7 @@ import static java.util.logging.Logger.getLogger; import java.io.BufferedReader; import java.io.IOException; +import java.io.Reader; import java.io.StringReader; import java.net.MalformedURLException; import java.util.logging.Level; @@ -36,7 +37,6 @@ import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.data.impl.IdOnlySone; import net.pterodactylus.sone.database.PostProvider; import net.pterodactylus.sone.database.SoneProvider; -import net.pterodactylus.util.io.Closer; import com.google.common.base.Optional; @@ -124,8 +124,8 @@ public class SoneTextParser implements Parser { @Override public Iterable parse(@Nonnull String source, @Nullable SoneTextParserContext context) { PartContainer parts = new PartContainer(); - BufferedReader bufferedReader = new BufferedReader(new StringReader(source)); - try { + try (Reader sourceReader = new StringReader(source); + BufferedReader bufferedReader = new BufferedReader(sourceReader)) { String line; boolean lastLineEmpty = true; int emptyLines = 0; @@ -212,8 +212,6 @@ public class SoneTextParser implements Parser { } catch (IOException ioe1) { // a buffered reader around a string reader should never throw. throw new RuntimeException(ioe1); - } finally { - Closer.close(bufferedReader); } for (int partIndex = parts.size() - 1; partIndex >= 0; --partIndex) { Part part = parts.getPart(partIndex); @@ -302,19 +300,12 @@ public class SoneTextParser implements Parser { private int findEndOfLink(String line) { Matcher matcher = whitespacePattern.matcher(line); - if (!matcher.find(0)) { - return line.length(); - } - int nextWhitespace = matcher.start(); - int lastPunctuation = nextWhitespace; - while (isPunctuation(line.charAt(lastPunctuation - 1))) { - lastPunctuation -= 1; - } - if (lastPunctuation < nextWhitespace) { - return lastPunctuation; + int endOfLink = matcher.find() ? matcher.start() : line.length(); + while ((endOfLink > 0) && isPunctuation(line.charAt(endOfLink - 1))) { + endOfLink--; } int openParens = 0; - for (int i = 0; i < nextWhitespace; i++) { + for (int i = 0; i < endOfLink; i++) { switch (line.charAt(i)) { case '(': openParens++; @@ -327,10 +318,10 @@ public class SoneTextParser implements Parser { default: } } - return nextWhitespace; + return endOfLink; } - private boolean isPunctuation(char character) { + private static boolean isPunctuation(char character) { return (character == '.') || (character == ','); }