diff --git a/markwon-html/src/main/java/ru/noties/markwon/html/HtmlPlugin.java b/markwon-html/src/main/java/ru/noties/markwon/html/HtmlPlugin.java
index 3852c772..0ee64b5e 100644
--- a/markwon-html/src/main/java/ru/noties/markwon/html/HtmlPlugin.java
+++ b/markwon-html/src/main/java/ru/noties/markwon/html/HtmlPlugin.java
@@ -6,6 +6,7 @@ import android.support.annotation.Nullable;
import org.commonmark.node.Document;
import org.commonmark.node.HtmlBlock;
import org.commonmark.node.HtmlInline;
+import org.commonmark.node.Node;
import ru.noties.markwon.AbstractMarkwonPlugin;
import ru.noties.markwon.MarkwonVisitor;
@@ -40,18 +41,14 @@ public class HtmlPlugin extends AbstractMarkwonPlugin {
this.parser = parser;
}
+ @Override
+ public void afterRender(@NonNull Node node, @NonNull MarkwonVisitor visitor) {
+ renderer.render(visitor.configuration(), visitor.builder(), parser);
+ }
+
@Override
public void configureVisitor(@NonNull MarkwonVisitor.Builder builder) {
builder
- .on(Document.class, new MarkwonVisitor.NodeVisitor() {
- @Override
- public void visit(@NonNull MarkwonVisitor visitor, @NonNull Document document) {
-
- visitor.visitChildren(document);
-
- renderer.render(visitor.configuration(), visitor.builder(), parser);
- }
- })
.on(HtmlBlock.class, new MarkwonVisitor.NodeVisitor() {
@Override
public void visit(@NonNull MarkwonVisitor visitor, @NonNull HtmlBlock htmlBlock) {
diff --git a/markwon/src/main/java/ru/noties/markwon/AbstractMarkwonPlugin.java b/markwon/src/main/java/ru/noties/markwon/AbstractMarkwonPlugin.java
index b1671899..5cf614be 100644
--- a/markwon/src/main/java/ru/noties/markwon/AbstractMarkwonPlugin.java
+++ b/markwon/src/main/java/ru/noties/markwon/AbstractMarkwonPlugin.java
@@ -3,6 +3,7 @@ package ru.noties.markwon;
import android.support.annotation.NonNull;
import android.widget.TextView;
+import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import ru.noties.markwon.image.AsyncDrawableLoader;
@@ -40,6 +41,16 @@ public abstract class AbstractMarkwonPlugin implements MarkwonPlugin {
return markdown;
}
+ @Override
+ public void beforeRender(@NonNull Node node) {
+
+ }
+
+ @Override
+ public void afterRender(@NonNull Node node, @NonNull MarkwonVisitor visitor) {
+
+ }
+
@Override
public void beforeSetText(@NonNull TextView textView, @NonNull CharSequence markdown) {
diff --git a/markwon/src/main/java/ru/noties/markwon/MarkwonImpl.java b/markwon/src/main/java/ru/noties/markwon/MarkwonImpl.java
index 77e68b49..fe6747c7 100644
--- a/markwon/src/main/java/ru/noties/markwon/MarkwonImpl.java
+++ b/markwon/src/main/java/ru/noties/markwon/MarkwonImpl.java
@@ -40,7 +40,17 @@ class MarkwonImpl extends Markwon {
@NonNull
@Override
public CharSequence render(@NonNull Node node) {
+
+ for (MarkwonPlugin plugin : plugins) {
+ plugin.beforeRender(node);
+ }
+
node.accept(visitor);
+
+ for (MarkwonPlugin plugin : plugins) {
+ plugin.afterRender(node, visitor);
+ }
+
return visitor.builder().text();
}
diff --git a/markwon/src/main/java/ru/noties/markwon/MarkwonPlugin.java b/markwon/src/main/java/ru/noties/markwon/MarkwonPlugin.java
index 690c8f97..4a1c33b9 100644
--- a/markwon/src/main/java/ru/noties/markwon/MarkwonPlugin.java
+++ b/markwon/src/main/java/ru/noties/markwon/MarkwonPlugin.java
@@ -3,6 +3,7 @@ package ru.noties.markwon;
import android.support.annotation.NonNull;
import android.widget.TextView;
+import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import ru.noties.markwon.image.AsyncDrawableLoader;
@@ -20,11 +21,13 @@ public interface MarkwonPlugin {
void configureVisitor(@NonNull MarkwonVisitor.Builder builder);
- // html
-
@NonNull
String processMarkdown(@NonNull String markdown);
+ void beforeRender(@NonNull Node node);
+
+ void afterRender(@NonNull Node node, @NonNull MarkwonVisitor visitor);
+
void beforeSetText(@NonNull TextView textView, @NonNull CharSequence markdown);
// this method do not receive markdown like `beforeSetText` does because at this