Only replace ASCII line breaks if shownotes don't already contain HTML ones

This commit is contained in:
Martin Fietz 2015-08-15 19:27:47 +02:00
parent cf1259e0b3
commit f8b7008182
1 changed files with 8 additions and 7 deletions

View File

@ -14,7 +14,6 @@ import org.jsoup.select.Elements;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import de.danoeh.antennapod.core.BuildConfig;
import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.ShownotesProvider; import de.danoeh.antennapod.core.util.ShownotesProvider;
@ -59,6 +58,8 @@ public class Timeline {
private static final Pattern TIMECODE_LINK_REGEX = Pattern.compile("antennapod://timecode/((\\d+))"); private static final Pattern TIMECODE_LINK_REGEX = Pattern.compile("antennapod://timecode/((\\d+))");
private static final String TIMECODE_LINK = "<a class=\"timecode\" href=\"antennapod://timecode/%d\">%s</a>"; private static final String TIMECODE_LINK = "<a class=\"timecode\" href=\"antennapod://timecode/%d\">%s</a>";
private static final Pattern TIMECODE_REGEX = Pattern.compile("\\b(?:(?:(([0-9][0-9])):))?(([0-9][0-9])):(([0-9][0-9]))\\b"); private static final Pattern TIMECODE_REGEX = Pattern.compile("\\b(?:(?:(([0-9][0-9])):))?(([0-9][0-9])):(([0-9][0-9]))\\b");
private static final Pattern LINE_BREAK_REGEX = Pattern.compile("<br *\\/?>");
/** /**
* Applies an app-specific CSS stylesheet and adds timecode links (optional). * Applies an app-specific CSS stylesheet and adds timecode links (optional).
@ -82,13 +83,14 @@ public class Timeline {
return null; return null;
} }
if (shownotes == null) { if (shownotes == null) {
if (BuildConfig.DEBUG) Log.d(TAG, "shownotesProvider contained no shownotes. Returning empty string");
Log.d(TAG, "shownotesProvider contained no shownotes. Returning empty string");
return ""; return "";
} }
// ASCII line breaks to HTML line breaks // replace ASCII line breaks with HTML ones if shownotes don't contain HTML line breaks already
shownotes = shownotes.replace("\n", "<br />"); if(!LINE_BREAK_REGEX.matcher(shownotes).find()) {
shownotes = shownotes.replace("\n", "<br />");
}
Document document = Jsoup.parse(shownotes); Document document = Jsoup.parse(shownotes);
@ -100,8 +102,7 @@ public class Timeline {
// apply timecode links // apply timecode links
if (addTimecodes) { if (addTimecodes) {
Elements elementsWithTimeCodes = document.body().getElementsMatchingOwnText(TIMECODE_REGEX); Elements elementsWithTimeCodes = document.body().getElementsMatchingOwnText(TIMECODE_REGEX);
if (BuildConfig.DEBUG) Log.d(TAG, "Recognized " + elementsWithTimeCodes.size() + " timecodes");
Log.d(TAG, "Recognized " + elementsWithTimeCodes.size() + " timecodes");
for (Element element : elementsWithTimeCodes) { for (Element element : elementsWithTimeCodes) {
Matcher matcherLong = TIMECODE_REGEX.matcher(element.html()); Matcher matcherLong = TIMECODE_REGEX.matcher(element.html());
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();