diff --git a/markwon-core/src/main/java/ru/noties/markwon/Markwon.java b/markwon-core/src/main/java/ru/noties/markwon/Markwon.java index bf963995..6e7e1ba3 100644 --- a/markwon-core/src/main/java/ru/noties/markwon/Markwon.java +++ b/markwon-core/src/main/java/ru/noties/markwon/Markwon.java @@ -88,6 +88,19 @@ public abstract class Markwon { public abstract void setParsedMarkdown(@NonNull TextView textView, @NonNull Spanned markdown); + /** + * Requests information if certain plugin has been registered. Please note that this + * method will check for super classes also, so if supplied with {@code markwon.hasPlugin(MarkwonPlugin.class)} + * this method (if has at least one plugin) will return true. If for example a custom + * (subclassed) version of a {@link CorePlugin} has been registered and given name + * {@code CorePlugin2}, then both {@code markwon.hasPlugin(CorePlugin2.class)} and + * {@code markwon.hasPlugin(CorePlugin.class)} will return true. + * + * @param plugin type to query + * @return true if a plugin is used when configuring this {@link Markwon} instance + */ + public abstract boolean hasPlugin(@NonNull Class extends MarkwonPlugin> plugin); + /** * Builder for {@link Markwon}. *
diff --git a/markwon-core/src/main/java/ru/noties/markwon/MarkwonImpl.java b/markwon-core/src/main/java/ru/noties/markwon/MarkwonImpl.java
index 3cf105b5..8d5211d8 100644
--- a/markwon-core/src/main/java/ru/noties/markwon/MarkwonImpl.java
+++ b/markwon-core/src/main/java/ru/noties/markwon/MarkwonImpl.java
@@ -95,4 +95,16 @@ class MarkwonImpl extends Markwon {
plugin.afterSetText(textView);
}
}
+
+ @Override
+ public boolean hasPlugin(@NonNull Class extends MarkwonPlugin> type) {
+ boolean result = false;
+ for (MarkwonPlugin plugin : plugins) {
+ if (type.isAssignableFrom(plugin.getClass())) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
}
diff --git a/markwon-core/src/test/java/ru/noties/markwon/MarkwonImplTest.java b/markwon-core/src/test/java/ru/noties/markwon/MarkwonImplTest.java
index 62ab3de0..f0771efa 100644
--- a/markwon-core/src/test/java/ru/noties/markwon/MarkwonImplTest.java
+++ b/markwon-core/src/test/java/ru/noties/markwon/MarkwonImplTest.java
@@ -16,9 +16,11 @@ import org.robolectric.annotation.Config;
import java.util.Arrays;
import java.util.Collections;
+import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
@@ -229,4 +231,30 @@ public class MarkwonImplTest {
verify(plugin, times(1)).afterSetText(eq(textView));
}
+
+ @Test
+ public void has_plugin() {
+
+ final class First extends AbstractMarkwonPlugin {
+ }
+
+ final class Second extends AbstractMarkwonPlugin {
+ }
+
+ final List