From 0ec8584c9e8d99c7179a201231ae7a0419c950b8 Mon Sep 17 00:00:00 2001 From: Stefan Niedermann Date: Sat, 28 Nov 2020 12:49:13 +0100 Subject: [PATCH] Move EditHandlers to editor package --- .../editor/EditorMultipleEditSpansSample.java | 1 + .../handler}/BlockQuoteEditHandler.java | 0 .../editor/handler/CodeBlockEditHandler.java | 47 +++++++++++++++++++ .../editor/handler}/CodeEditHandler.java | 0 .../editor/handler}/HeadingEditHandler.java | 0 .../handler}/StrikethroughEditHandler.java | 0 6 files changed, 48 insertions(+) rename {app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared => markwon-editor/src/main/java/io/noties/markwon/editor/handler}/BlockQuoteEditHandler.java (100%) create mode 100644 markwon-editor/src/main/java/io/noties/markwon/editor/handler/CodeBlockEditHandler.java rename {app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared => markwon-editor/src/main/java/io/noties/markwon/editor/handler}/CodeEditHandler.java (100%) rename {app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared => markwon-editor/src/main/java/io/noties/markwon/editor/handler}/HeadingEditHandler.java (100%) rename {app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared => markwon-editor/src/main/java/io/noties/markwon/editor/handler}/StrikethroughEditHandler.java (100%) diff --git a/app-sample/src/main/java/io/noties/markwon/app/samples/editor/EditorMultipleEditSpansSample.java b/app-sample/src/main/java/io/noties/markwon/app/samples/editor/EditorMultipleEditSpansSample.java index 91e36ad1..b2ba4f17 100644 --- a/app-sample/src/main/java/io/noties/markwon/app/samples/editor/EditorMultipleEditSpansSample.java +++ b/app-sample/src/main/java/io/noties/markwon/app/samples/editor/EditorMultipleEditSpansSample.java @@ -76,6 +76,7 @@ public class EditorMultipleEditSpansSample extends MarkwonEditTextSample { .useEditHandler(new EmphasisEditHandler()) .useEditHandler(new StrongEmphasisEditHandler()) .useEditHandler(new StrikethroughEditHandler()) + .useEditHandler(new CodeBlockEditHandler()) .useEditHandler(new CodeEditHandler()) .useEditHandler(new BlockQuoteEditHandler()) .useEditHandler(new LinkEditHandler(onClick)) diff --git a/app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared/BlockQuoteEditHandler.java b/markwon-editor/src/main/java/io/noties/markwon/editor/handler/BlockQuoteEditHandler.java similarity index 100% rename from app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared/BlockQuoteEditHandler.java rename to markwon-editor/src/main/java/io/noties/markwon/editor/handler/BlockQuoteEditHandler.java diff --git a/markwon-editor/src/main/java/io/noties/markwon/editor/handler/CodeBlockEditHandler.java b/markwon-editor/src/main/java/io/noties/markwon/editor/handler/CodeBlockEditHandler.java new file mode 100644 index 00000000..0f94bba4 --- /dev/null +++ b/markwon-editor/src/main/java/io/noties/markwon/editor/handler/CodeBlockEditHandler.java @@ -0,0 +1,47 @@ +package it.niedermann.android.markdown.markwon.handler; + +import android.text.Editable; +import android.text.Spanned; + +import androidx.annotation.NonNull; + +import io.noties.markwon.Markwon; +import io.noties.markwon.core.MarkwonTheme; +import io.noties.markwon.core.spans.CodeBlockSpan; +import io.noties.markwon.editor.EditHandler; +import io.noties.markwon.editor.MarkwonEditorUtils; +import io.noties.markwon.editor.PersistedSpans; + +public class CodeBlockEditHandler implements EditHandler { + private MarkwonTheme theme; + + @Override + public void init(@NonNull Markwon markwon) { + theme = markwon.configuration().theme(); + } + + @Override + public void configurePersistedSpans(@NonNull PersistedSpans.Builder builder) { + builder.persistSpan(CodeBlockSpan.class, () -> new CodeBlockSpan(theme)); + } + + @Override + public void handleMarkdownSpan(@NonNull PersistedSpans persistedSpans, @NonNull Editable editable, @NonNull String input, @NonNull CodeBlockSpan span, int spanStart, int spanTextLength) { + MarkwonEditorUtils.Match delimited = MarkwonEditorUtils.findDelimited(input, spanStart, "```"); + if (delimited != null) { + editable.setSpan( + persistedSpans.get(markdownSpanType()), + delimited.start(), + delimited.end(), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + + ); + } + } + + @NonNull + @Override + public Class markdownSpanType() { + return CodeBlockSpan.class; + } +} diff --git a/app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared/CodeEditHandler.java b/markwon-editor/src/main/java/io/noties/markwon/editor/handler/CodeEditHandler.java similarity index 100% rename from app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared/CodeEditHandler.java rename to markwon-editor/src/main/java/io/noties/markwon/editor/handler/CodeEditHandler.java diff --git a/app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared/HeadingEditHandler.java b/markwon-editor/src/main/java/io/noties/markwon/editor/handler/HeadingEditHandler.java similarity index 100% rename from app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared/HeadingEditHandler.java rename to markwon-editor/src/main/java/io/noties/markwon/editor/handler/HeadingEditHandler.java diff --git a/app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared/StrikethroughEditHandler.java b/markwon-editor/src/main/java/io/noties/markwon/editor/handler/StrikethroughEditHandler.java similarity index 100% rename from app-sample/src/main/java/io/noties/markwon/app/samples/editor/shared/StrikethroughEditHandler.java rename to markwon-editor/src/main/java/io/noties/markwon/editor/handler/StrikethroughEditHandler.java