From f86cf1d109d33f5d377b778728e271d94ef3f4b1 Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Sat, 22 Dec 2018 16:26:40 +0300 Subject: [PATCH] Update latex extension for latest changes --- .../markwon/ext/latex/JLatexMathPlugin.java | 22 ++++++++----------- .../ru/noties/markwon/MarkwonVisitor.java | 4 ++++ .../ru/noties/markwon/MarkwonVisitorImpl.java | 13 +++++++++++ 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/markwon-ext-latex/src/main/java/ru/noties/markwon/ext/latex/JLatexMathPlugin.java b/markwon-ext-latex/src/main/java/ru/noties/markwon/ext/latex/JLatexMathPlugin.java index eec628a9..ee653b2f 100644 --- a/markwon-ext-latex/src/main/java/ru/noties/markwon/ext/latex/JLatexMathPlugin.java +++ b/markwon-ext-latex/src/main/java/ru/noties/markwon/ext/latex/JLatexMathPlugin.java @@ -5,6 +5,7 @@ import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import org.commonmark.node.Image; import org.commonmark.parser.Parser; import java.io.ByteArrayInputStream; @@ -14,10 +15,11 @@ import java.util.Scanner; import ru.noties.jlatexmath.JLatexMathDrawable; import ru.noties.markwon.AbstractMarkwonPlugin; -import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonVisitor; +import ru.noties.markwon.RenderProps; import ru.noties.markwon.image.AsyncDrawableLoader; import ru.noties.markwon.image.ImageItem; +import ru.noties.markwon.image.ImageProps; import ru.noties.markwon.image.ImageSize; import ru.noties.markwon.image.MediaDecoder; import ru.noties.markwon.image.SchemeHandler; @@ -77,19 +79,13 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin { final int length = visitor.length(); visitor.builder().append(latex); - final MarkwonConfiguration configuration = visitor.configuration(); + final RenderProps renderProps = visitor.renderProps(); - visitor.setSpans( - length, - configuration.factory().image( - visitor.theme(), - makeDestination(latex), - configuration.asyncDrawableLoader(), - configuration.imageSizeResolver(), - new ImageSize(new ImageSize.Dimension(100, "%"), null), - false - ) - ); + ImageProps.DESTINATION.set(renderProps, makeDestination(latex)); + ImageProps.REPLACEMENT_TEXT_IS_LINK.set(renderProps, false); + ImageProps.IMAGE_SIZE.set(renderProps, new ImageSize(new ImageSize.Dimension(100, "%"), null)); + + visitor.setSpansForNode(Image.class, length); } }); } diff --git a/markwon/src/main/java/ru/noties/markwon/MarkwonVisitor.java b/markwon/src/main/java/ru/noties/markwon/MarkwonVisitor.java index f5e67c1f..81d3138f 100644 --- a/markwon/src/main/java/ru/noties/markwon/MarkwonVisitor.java +++ b/markwon/src/main/java/ru/noties/markwon/MarkwonVisitor.java @@ -49,6 +49,10 @@ public interface MarkwonVisitor extends Visitor { // will throw, if not desired use setSpansForNodeOptional void setSpansForNode(@NonNull N node, int start); + void setSpansForNode(@NonNull Class node, int start); + // does not throw if there is no SpanFactory registered for this node void setSpansForNodeOptional(@NonNull N node, int start); + + void setSpansForNodeOptional(@NonNull Class node, int start); } diff --git a/markwon/src/main/java/ru/noties/markwon/MarkwonVisitorImpl.java b/markwon/src/main/java/ru/noties/markwon/MarkwonVisitorImpl.java index 0421f9e3..2616d843 100644 --- a/markwon/src/main/java/ru/noties/markwon/MarkwonVisitorImpl.java +++ b/markwon/src/main/java/ru/noties/markwon/MarkwonVisitorImpl.java @@ -236,6 +236,11 @@ class MarkwonVisitorImpl implements MarkwonVisitor { setSpans(start, configuration.spansFactory().require(node).getSpans(configuration, renderProps)); } + @Override + public void setSpansForNode(@NonNull Class node, int start) { + setSpans(start, configuration.spansFactory().require(node).getSpans(configuration, renderProps)); + } + @Override public void setSpansForNodeOptional(@NonNull N node, int start) { final SpanFactory factory = configuration.spansFactory().get(node); @@ -244,6 +249,14 @@ class MarkwonVisitorImpl implements MarkwonVisitor { } } + @Override + public void setSpansForNodeOptional(@NonNull Class node, int start) { + final SpanFactory factory = configuration.spansFactory().get(node); + if (factory != null) { + setSpans(start, factory.getSpans(configuration, renderProps)); + } + } + static class BuilderImpl implements Builder { private final Map, NodeVisitor> nodes = new HashMap<>();