Add before and after render methods to plugin
This commit is contained in:
parent
dc9a4dbf56
commit
b6b360b736
@ -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<Document>() {
|
||||
@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<HtmlBlock>() {
|
||||
@Override
|
||||
public void visit(@NonNull MarkwonVisitor visitor, @NonNull HtmlBlock htmlBlock) {
|
||||
|
@ -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) {
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user