Update latex extension for latest changes

This commit is contained in:
Dimitry Ivanov 2018-12-22 16:26:40 +03:00
parent 107246c573
commit f86cf1d109
3 changed files with 26 additions and 13 deletions

View File

@ -5,6 +5,7 @@ import android.net.Uri;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import org.commonmark.node.Image;
import org.commonmark.parser.Parser; import org.commonmark.parser.Parser;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@ -14,10 +15,11 @@ import java.util.Scanner;
import ru.noties.jlatexmath.JLatexMathDrawable; import ru.noties.jlatexmath.JLatexMathDrawable;
import ru.noties.markwon.AbstractMarkwonPlugin; import ru.noties.markwon.AbstractMarkwonPlugin;
import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.MarkwonVisitor; import ru.noties.markwon.MarkwonVisitor;
import ru.noties.markwon.RenderProps;
import ru.noties.markwon.image.AsyncDrawableLoader; import ru.noties.markwon.image.AsyncDrawableLoader;
import ru.noties.markwon.image.ImageItem; import ru.noties.markwon.image.ImageItem;
import ru.noties.markwon.image.ImageProps;
import ru.noties.markwon.image.ImageSize; import ru.noties.markwon.image.ImageSize;
import ru.noties.markwon.image.MediaDecoder; import ru.noties.markwon.image.MediaDecoder;
import ru.noties.markwon.image.SchemeHandler; import ru.noties.markwon.image.SchemeHandler;
@ -77,19 +79,13 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin {
final int length = visitor.length(); final int length = visitor.length();
visitor.builder().append(latex); visitor.builder().append(latex);
final MarkwonConfiguration configuration = visitor.configuration(); final RenderProps renderProps = visitor.renderProps();
visitor.setSpans( ImageProps.DESTINATION.set(renderProps, makeDestination(latex));
length, ImageProps.REPLACEMENT_TEXT_IS_LINK.set(renderProps, false);
configuration.factory().image( ImageProps.IMAGE_SIZE.set(renderProps, new ImageSize(new ImageSize.Dimension(100, "%"), null));
visitor.theme(),
makeDestination(latex), visitor.setSpansForNode(Image.class, length);
configuration.asyncDrawableLoader(),
configuration.imageSizeResolver(),
new ImageSize(new ImageSize.Dimension(100, "%"), null),
false
)
);
} }
}); });
} }

View File

@ -49,6 +49,10 @@ public interface MarkwonVisitor extends Visitor {
// will throw, if not desired use setSpansForNodeOptional // will throw, if not desired use setSpansForNodeOptional
<N extends Node> void setSpansForNode(@NonNull N node, int start); <N extends Node> void setSpansForNode(@NonNull N node, int start);
<N extends Node> void setSpansForNode(@NonNull Class<N> node, int start);
// does not throw if there is no SpanFactory registered for this node // does not throw if there is no SpanFactory registered for this node
<N extends Node> void setSpansForNodeOptional(@NonNull N node, int start); <N extends Node> void setSpansForNodeOptional(@NonNull N node, int start);
<N extends Node> void setSpansForNodeOptional(@NonNull Class<N> node, int start);
} }

View File

@ -236,6 +236,11 @@ class MarkwonVisitorImpl implements MarkwonVisitor {
setSpans(start, configuration.spansFactory().require(node).getSpans(configuration, renderProps)); setSpans(start, configuration.spansFactory().require(node).getSpans(configuration, renderProps));
} }
@Override
public <N extends Node> void setSpansForNode(@NonNull Class<N> node, int start) {
setSpans(start, configuration.spansFactory().require(node).getSpans(configuration, renderProps));
}
@Override @Override
public <N extends Node> void setSpansForNodeOptional(@NonNull N node, int start) { public <N extends Node> void setSpansForNodeOptional(@NonNull N node, int start) {
final SpanFactory factory = configuration.spansFactory().get(node); final SpanFactory factory = configuration.spansFactory().get(node);
@ -244,6 +249,14 @@ class MarkwonVisitorImpl implements MarkwonVisitor {
} }
} }
@Override
public <N extends Node> void setSpansForNodeOptional(@NonNull Class<N> node, int start) {
final SpanFactory factory = configuration.spansFactory().get(node);
if (factory != null) {
setSpans(start, factory.getSpans(configuration, renderProps));
}
}
static class BuilderImpl implements Builder { static class BuilderImpl implements Builder {
private final Map<Class<? extends Node>, NodeVisitor<? extends Node>> nodes = new HashMap<>(); private final Map<Class<? extends Node>, NodeVisitor<? extends Node>> nodes = new HashMap<>();