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.Document;
|
||||||
import org.commonmark.node.HtmlBlock;
|
import org.commonmark.node.HtmlBlock;
|
||||||
import org.commonmark.node.HtmlInline;
|
import org.commonmark.node.HtmlInline;
|
||||||
|
import org.commonmark.node.Node;
|
||||||
|
|
||||||
import ru.noties.markwon.AbstractMarkwonPlugin;
|
import ru.noties.markwon.AbstractMarkwonPlugin;
|
||||||
import ru.noties.markwon.MarkwonVisitor;
|
import ru.noties.markwon.MarkwonVisitor;
|
||||||
@ -40,18 +41,14 @@ public class HtmlPlugin extends AbstractMarkwonPlugin {
|
|||||||
this.parser = parser;
|
this.parser = parser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterRender(@NonNull Node node, @NonNull MarkwonVisitor visitor) {
|
||||||
|
renderer.render(visitor.configuration(), visitor.builder(), parser);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configureVisitor(@NonNull MarkwonVisitor.Builder builder) {
|
public void configureVisitor(@NonNull MarkwonVisitor.Builder 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>() {
|
.on(HtmlBlock.class, new MarkwonVisitor.NodeVisitor<HtmlBlock>() {
|
||||||
@Override
|
@Override
|
||||||
public void visit(@NonNull MarkwonVisitor visitor, @NonNull HtmlBlock htmlBlock) {
|
public void visit(@NonNull MarkwonVisitor visitor, @NonNull HtmlBlock htmlBlock) {
|
||||||
|
@ -3,6 +3,7 @@ package ru.noties.markwon;
|
|||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import org.commonmark.node.Node;
|
||||||
import org.commonmark.parser.Parser;
|
import org.commonmark.parser.Parser;
|
||||||
|
|
||||||
import ru.noties.markwon.image.AsyncDrawableLoader;
|
import ru.noties.markwon.image.AsyncDrawableLoader;
|
||||||
@ -40,6 +41,16 @@ public abstract class AbstractMarkwonPlugin implements MarkwonPlugin {
|
|||||||
return markdown;
|
return markdown;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeRender(@NonNull Node node) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterRender(@NonNull Node node, @NonNull MarkwonVisitor visitor) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void beforeSetText(@NonNull TextView textView, @NonNull CharSequence markdown) {
|
public void beforeSetText(@NonNull TextView textView, @NonNull CharSequence markdown) {
|
||||||
|
|
||||||
|
@ -40,7 +40,17 @@ class MarkwonImpl extends Markwon {
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public CharSequence render(@NonNull Node node) {
|
public CharSequence render(@NonNull Node node) {
|
||||||
|
|
||||||
|
for (MarkwonPlugin plugin : plugins) {
|
||||||
|
plugin.beforeRender(node);
|
||||||
|
}
|
||||||
|
|
||||||
node.accept(visitor);
|
node.accept(visitor);
|
||||||
|
|
||||||
|
for (MarkwonPlugin plugin : plugins) {
|
||||||
|
plugin.afterRender(node, visitor);
|
||||||
|
}
|
||||||
|
|
||||||
return visitor.builder().text();
|
return visitor.builder().text();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ package ru.noties.markwon;
|
|||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import org.commonmark.node.Node;
|
||||||
import org.commonmark.parser.Parser;
|
import org.commonmark.parser.Parser;
|
||||||
|
|
||||||
import ru.noties.markwon.image.AsyncDrawableLoader;
|
import ru.noties.markwon.image.AsyncDrawableLoader;
|
||||||
@ -20,11 +21,13 @@ public interface MarkwonPlugin {
|
|||||||
|
|
||||||
void configureVisitor(@NonNull MarkwonVisitor.Builder builder);
|
void configureVisitor(@NonNull MarkwonVisitor.Builder builder);
|
||||||
|
|
||||||
// html
|
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
String processMarkdown(@NonNull String markdown);
|
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);
|
void beforeSetText(@NonNull TextView textView, @NonNull CharSequence markdown);
|
||||||
|
|
||||||
// this method do not receive markdown like `beforeSetText` does because at this
|
// this method do not receive markdown like `beforeSetText` does because at this
|
||||||
|
Loading…
x
Reference in New Issue
Block a user