Use Runnable instances instead of Lambda expressions for Java < 8 compatibility

This commit is contained in:
Stefan Niedermann 2020-11-29 10:49:54 +01:00
parent a46df8fa66
commit 36977c9a86

View File

@ -2,7 +2,6 @@ package it.niedermann.android.markdown.markwon.handler;
import android.text.Editable;
import android.text.Spanned;
import android.util.Log;
import androidx.annotation.NonNull;
@ -14,14 +13,6 @@ import io.noties.markwon.editor.PersistedSpans;
public class HeadingEditHandler implements EditHandler<HeadingSpan> {
private static final String[] MARKERS = new String[]{
"#",
"##",
"###",
"####",
"#####",
"######",
};
private MarkwonTheme theme;
@ -32,12 +23,12 @@ public class HeadingEditHandler implements EditHandler<HeadingSpan> {
@Override
public void configurePersistedSpans(@NonNull PersistedSpans.Builder builder) {
builder.persistSpan(Heading1Span.class, () -> new Heading1Span(theme));
builder.persistSpan(Heading2Span.class, () -> new Heading2Span(theme));
builder.persistSpan(Heading3Span.class, () -> new Heading3Span(theme));
builder.persistSpan(Heading4Span.class, () -> new Heading4Span(theme));
builder.persistSpan(Heading5Span.class, () -> new Heading5Span(theme));
builder.persistSpan(Heading6Span.class, () -> new Heading6Span(theme));
builder.persistSpan(Heading1Span.class, new Runnable() { new Heading1Span(theme)});
builder.persistSpan(Heading2Span.class, new Runnable() { new Heading2Span(theme)});
builder.persistSpan(Heading3Span.class, new Runnable() { new Heading3Span(theme)});
builder.persistSpan(Heading4Span.class, new Runnable() { new Heading4Span(theme)});
builder.persistSpan(Heading5Span.class, new Runnable() { new Heading5Span(theme)});
builder.persistSpan(Heading6Span.class, new Runnable() { new Heading6Span(theme)});
}
@Override
@ -73,9 +64,8 @@ public class HeadingEditHandler implements EditHandler<HeadingSpan> {
return;
}
int newStart = getNewSpanStart(input, spanStart, newSpan.getLevel());
int newEnd = input.indexOf("\n", newStart);
Log.w("deck", "found heading lv "+span.getLevel()+": \""+input.substring(newStart, newEnd)+"\"");
int newStart = getNewSpanStart(input, spanStart);
int newEnd = findEnd(input, newStart, newSpan.getLevel());
editable.setSpan(
newSpan,
@ -85,11 +75,19 @@ public class HeadingEditHandler implements EditHandler<HeadingSpan> {
);
}
private int getNewSpanStart(String input, int spanStart, int level) {
String marker = MARKERS[level-1];
if (input.substring(spanStart, spanStart + level).equals(marker)) {
return spanStart;
private int findEnd(String input, int searchFrom, int spanLevel) {
int end = searchFrom + spanLevel;
int strLength = input.length();
while (end < strLength-1) {
end++;
if (input.charAt(end) == '\n') {
break;
}
}
return end+1;
}
private int getNewSpanStart(String input, int spanStart) {
int start = spanStart;