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