aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/utils/Utils.java134
1 files changed, 67 insertions, 67 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/Utils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/Utils.java
index ea8adeb2..aa462953 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/utils/Utils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/utils/Utils.java
@@ -74,9 +74,10 @@ public final class Utils {
Pattern.compile("((?<=[\\s])|^)[rRuU]/[\\w-]+/{0,1}"),
Pattern.compile("\\^{2,}"),
//Sometimes the reddit preview images and gifs have a caption and the markdown will become [caption](image_link)
- Pattern.compile("(\\[(?:(?!((?<!\\\\)\\[)).)*?]\\()?https://preview.redd.it/\\w+.(jpg|png|jpeg)((\\?+[-a-zA-Z0-9()@:%_+.~#?&/=]*)|)"),
- //Same reason as above. But this time it only matches [caption](image-link. Notice there is no ) at the end.
- Pattern.compile("(\\[(?:(?!((?<!\\\\)\\[)).)*?]\\()?https://i.redd.it/\\w+.(jpg|png|jpeg|gif)")
+ //Matches preview.redd.it and i.redd.it media
+ //For i.redd.it media, it only matches [caption](image-link. Notice there is no ) at the end.
+ //i.redd.it: (\\[(?:(?!((?<!\\\\)\\[)).)*?]\\()?https://i.redd.it/\\w+.(jpg|png|jpeg|gif)"
+ Pattern.compile("((?:\\[(?:(?!((?<!\\\\)\\[)).)*?]\\()?https://preview.redd.it/\\w+.(?:jpg|png|jpeg)(?:(\\?+[-a-zA-Z0-9()@:%_+.~#?&/=]*)|))|((?:\\[(?:(?!((?<!\\\\)\\[)).)*?]\\()?https://i.redd.it/\\w+.(?:jpg|png|jpeg|gif))"),
};
public static String modifyMarkdown(String markdown) {
@@ -93,83 +94,82 @@ public final class Utils {
}
StringBuilder markdownStringBuilder = new StringBuilder(markdown);
- Pattern previewReddItImagePattern = REGEX_PATTERNS[3];
- Matcher matcher = previewReddItImagePattern.matcher(markdownStringBuilder);
+ Pattern previewReddItAndIReddItImagePattern = REGEX_PATTERNS[3];
+ Matcher matcher = previewReddItAndIReddItImagePattern.matcher(markdownStringBuilder);
int start = 0;
int previewReddItLength = "https://preview.redd.it/".length();
+ int iReddItLength = "https://i.redd.it/".length();
while (matcher.find(start)) {
- String id;
- String caption = null;
- if (markdownStringBuilder.charAt(matcher.start()) == '[') {
- //Has caption
- int urlStartIndex = markdownStringBuilder.lastIndexOf("https://preview.redd.it/", matcher.end());
- id = markdownStringBuilder.substring(previewReddItLength + urlStartIndex,
- markdownStringBuilder.indexOf(".", previewReddItLength + urlStartIndex));
- //Minus "](".length()
- caption = markdownStringBuilder.substring(matcher.start() + 1, urlStartIndex - 2);
- } else {
- id = markdownStringBuilder.substring(matcher.start() + previewReddItLength,
- markdownStringBuilder.indexOf(".", matcher.start() + previewReddItLength));
- }
+ if (matcher.group(1) != null) {
+ String id;
+ String caption = null;
+ if (markdownStringBuilder.charAt(matcher.start()) == '[') {
+ //Has caption
+ int urlStartIndex = markdownStringBuilder.lastIndexOf("https://preview.redd.it/", matcher.end());
+ id = markdownStringBuilder.substring(previewReddItLength + urlStartIndex,
+ markdownStringBuilder.indexOf(".", previewReddItLength + urlStartIndex));
+ //Minus "](".length()
+ caption = markdownStringBuilder.substring(matcher.start() + 1, urlStartIndex - 2);
+ } else {
+ id = markdownStringBuilder.substring(matcher.start() + previewReddItLength,
+ markdownStringBuilder.indexOf(".", matcher.start() + previewReddItLength));
+ }
- MediaMetadata mediaMetadata = mediaMetadataMap.get(id);
- if (mediaMetadata == null) {
- start = matcher.end();
- continue;
- }
+ MediaMetadata mediaMetadata = mediaMetadataMap.get(id);
+ if (mediaMetadata == null) {
+ start = matcher.end();
+ continue;
+ }
- mediaMetadata.caption = caption;
+ mediaMetadata.caption = caption;
- if (markdownStringBuilder.charAt(matcher.start()) == '[') {
- //Has caption
- markdownStringBuilder.insert(matcher.start(), '!');
- start = matcher.end() + 1;
- } else {
- String replacingText = "![](" + markdownStringBuilder.substring(matcher.start(), matcher.end()) + ")";
- markdownStringBuilder.replace(matcher.start(), matcher.end(), replacingText);
- start = replacingText.length() + matcher.start();
- }
+ if (markdownStringBuilder.charAt(matcher.start()) == '[') {
+ //Has caption
+ markdownStringBuilder.insert(matcher.start(), '!');
+ start = matcher.end() + 1;
+ } else {
+ String replacingText = "![](" + markdownStringBuilder.substring(matcher.start(), matcher.end()) + ")";
+ markdownStringBuilder.replace(matcher.start(), matcher.end(), replacingText);
+ start = replacingText.length() + matcher.start();
+ }
- matcher = previewReddItImagePattern.matcher(markdownStringBuilder);
- }
+ matcher = previewReddItAndIReddItImagePattern.matcher(markdownStringBuilder);
+ } else if (matcher.group(2) != null) {
+ String id;
+ String caption = null;
+ if (markdownStringBuilder.charAt(matcher.start()) == '[') {
+ //Has caption
+ int urlStartIndex = markdownStringBuilder.lastIndexOf("https://i.redd.it/", matcher.end());
+ id = markdownStringBuilder.substring(iReddItLength + urlStartIndex,
+ markdownStringBuilder.indexOf(".", iReddItLength + urlStartIndex));
+ //Minus "](".length()
+ caption = markdownStringBuilder.substring(matcher.start() + 1, urlStartIndex - 2);
+ } else {
+ id = markdownStringBuilder.substring(matcher.start() + iReddItLength, markdownStringBuilder.indexOf(".", matcher.start() + iReddItLength));
+ }
- start = 0;
- Pattern iReddItImagePattern = REGEX_PATTERNS[4];
- matcher = iReddItImagePattern.matcher(markdownStringBuilder);
- int iReddItLength = "https://i.redd.it/".length();
- while (matcher.find(start)) {
- String id;
- String caption = null;
- if (markdownStringBuilder.charAt(matcher.start()) == '[') {
- //Has caption
- int urlStartIndex = markdownStringBuilder.lastIndexOf("https://i.redd.it/", matcher.end());
- id = markdownStringBuilder.substring(iReddItLength + urlStartIndex,
- markdownStringBuilder.indexOf(".", iReddItLength + urlStartIndex));
- //Minus "](".length()
- caption = markdownStringBuilder.substring(matcher.start() + 1, urlStartIndex - 2);
- } else {
- id = markdownStringBuilder.substring(matcher.start() + iReddItLength, markdownStringBuilder.indexOf(".", matcher.start() + iReddItLength));
- }
+ MediaMetadata mediaMetadata = mediaMetadataMap.get(id);
+ if (mediaMetadata == null) {
+ start = matcher.end();
+ continue;
+ }
- MediaMetadata mediaMetadata = mediaMetadataMap.get(id);
- if (mediaMetadata == null) {
- start = matcher.end();
- continue;
- }
+ mediaMetadata.caption = caption;
- mediaMetadata.caption = caption;
+ if (markdownStringBuilder.charAt(matcher.start()) == '[') {
+ //Has caption
+ markdownStringBuilder.insert(matcher.start(), '!');
+ start = matcher.end() + 1;
+ } else {
+ String replacingText = "![](" + markdownStringBuilder.substring(matcher.start(), matcher.end()) + ")";
+ markdownStringBuilder.replace(matcher.start(), matcher.end(), replacingText);
+ start = replacingText.length() + matcher.start();
+ }
- if (markdownStringBuilder.charAt(matcher.start()) == '[') {
- //Has caption
- markdownStringBuilder.insert(matcher.start(), '!');
- start = matcher.end() + 1;
+ matcher = previewReddItAndIReddItImagePattern.matcher(markdownStringBuilder);
} else {
- String replacingText = "![](" + markdownStringBuilder.substring(matcher.start(), matcher.end()) + ")";
- markdownStringBuilder.replace(matcher.start(), matcher.end(), replacingText);
- start = replacingText.length() + matcher.start();
+ start = matcher.end();
}
-
- matcher = iReddItImagePattern.matcher(markdownStringBuilder);
}
return markdownStringBuilder.toString();