Removed html from core artifact

This commit is contained in:
Dimitry Ivanov 2018-11-26 17:21:24 +03:00
parent d48b33e9a5
commit dc9a4dbf56
54 changed files with 129 additions and 172 deletions

View File

@ -18,7 +18,7 @@ import ru.noties.markwon.ext.strikethrough.StrikethroughPlugin;
import ru.noties.markwon.ext.tables.TablePlugin; import ru.noties.markwon.ext.tables.TablePlugin;
import ru.noties.markwon.ext.tasklist.TaskListPlugin; import ru.noties.markwon.ext.tasklist.TaskListPlugin;
import ru.noties.markwon.gif.GifAwarePlugin; import ru.noties.markwon.gif.GifAwarePlugin;
import ru.noties.markwon.html.impl.HtmlPlugin; import ru.noties.markwon.html.HtmlPlugin;
import ru.noties.markwon.image.ImagesPlugin; import ru.noties.markwon.image.ImagesPlugin;
import ru.noties.markwon.image.gif.GifPlugin; import ru.noties.markwon.image.gif.GifPlugin;
import ru.noties.markwon.image.svg.SvgPlugin; import ru.noties.markwon.image.svg.SvgPlugin;

View File

@ -1 +1 @@
<manifest package="ru.noties.markwon.html.impl" /> <manifest package="ru.noties.markwon.html" />

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl; package ru.noties.markwon.html;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl; package ru.noties.markwon.html;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl; package ru.noties.markwon.html;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;

View File

@ -1,10 +1,8 @@
package ru.noties.markwon.html.impl; package ru.noties.markwon.html;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import ru.noties.markwon.html.HtmlTag;
/** /**
* This class will be used to append some text to output in order to * This class will be used to append some text to output in order to
* apply a Span for this tag. Please note that this class will be used for * apply a Span for this tag. Please note that this class will be used for

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl; package ru.noties.markwon.html;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -8,10 +8,7 @@ import org.commonmark.node.HtmlBlock;
import org.commonmark.node.HtmlInline; import org.commonmark.node.HtmlInline;
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.html.MarkwonHtmlParser;
import ru.noties.markwon.html.MarkwonHtmlRenderer;
public class HtmlPlugin extends AbstractMarkwonPlugin { public class HtmlPlugin extends AbstractMarkwonPlugin {
@ -43,13 +40,6 @@ public class HtmlPlugin extends AbstractMarkwonPlugin {
this.parser = parser; this.parser = parser;
} }
@Override
public void configureConfiguration(@NonNull MarkwonConfiguration.Builder builder) {
builder
.htmlParser(parser)
.htmlRenderer(renderer);
}
@Override @Override
public void configureVisitor(@NonNull MarkwonVisitor.Builder builder) { public void configureVisitor(@NonNull MarkwonVisitor.Builder builder) {
builder builder
@ -59,8 +49,7 @@ public class HtmlPlugin extends AbstractMarkwonPlugin {
visitor.visitChildren(document); visitor.visitChildren(document);
final MarkwonConfiguration configuration = visitor.configuration(); renderer.render(visitor.configuration(), visitor.builder(), parser);
configuration.htmlRenderer().render(configuration, visitor.builder(), configuration.htmlParser());
} }
}) })
.on(HtmlBlock.class, new MarkwonVisitor.NodeVisitor<HtmlBlock>() { .on(HtmlBlock.class, new MarkwonVisitor.NodeVisitor<HtmlBlock>() {
@ -79,7 +68,7 @@ public class HtmlPlugin extends AbstractMarkwonPlugin {
private void visitHtml(@NonNull MarkwonVisitor visitor, @Nullable String html) { private void visitHtml(@NonNull MarkwonVisitor visitor, @Nullable String html) {
if (html != null) { if (html != null) {
visitor.configuration().htmlParser().processFragment(visitor.builder(), html); parser.processFragment(visitor.builder(), html);
} }
} }
} }

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl; package ru.noties.markwon.html;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -7,8 +7,6 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import ru.noties.markwon.html.HtmlTag;
abstract class HtmlTagImpl implements HtmlTag { abstract class HtmlTagImpl implements HtmlTag {
final String name; final String name;

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl; package ru.noties.markwon.html;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -14,18 +14,16 @@ import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import ru.noties.markwon.html.HtmlTag;
import ru.noties.markwon.html.HtmlTag.Block; import ru.noties.markwon.html.HtmlTag.Block;
import ru.noties.markwon.html.HtmlTag.Inline; import ru.noties.markwon.html.HtmlTag.Inline;
import ru.noties.markwon.html.MarkwonHtmlParser; import ru.noties.markwon.html.jsoup.nodes.Attribute;
import ru.noties.markwon.html.impl.jsoup.nodes.Attribute; import ru.noties.markwon.html.jsoup.nodes.Attributes;
import ru.noties.markwon.html.impl.jsoup.nodes.Attributes; import ru.noties.markwon.html.jsoup.parser.CharacterReader;
import ru.noties.markwon.html.impl.jsoup.parser.CharacterReader; import ru.noties.markwon.html.jsoup.parser.ParseErrorList;
import ru.noties.markwon.html.impl.jsoup.parser.ParseErrorList; import ru.noties.markwon.html.jsoup.parser.Token;
import ru.noties.markwon.html.impl.jsoup.parser.Token; import ru.noties.markwon.html.jsoup.parser.Tokeniser;
import ru.noties.markwon.html.impl.jsoup.parser.Tokeniser;
import static ru.noties.markwon.html.impl.AppendableUtils.appendQuietly; import static ru.noties.markwon.html.AppendableUtils.appendQuietly;
/** /**
* @since 2.0.0 * @since 2.0.0

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl; package ru.noties.markwon.html;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -11,21 +11,17 @@ import java.util.Map;
import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.SpannableBuilder; import ru.noties.markwon.SpannableBuilder;
import ru.noties.markwon.html.HtmlTag; import ru.noties.markwon.html.tag.BlockquoteHandler;
import ru.noties.markwon.html.MarkwonHtmlParser; import ru.noties.markwon.html.tag.EmphasisHandler;
import ru.noties.markwon.html.MarkwonHtmlRenderer; import ru.noties.markwon.html.tag.HeadingHandler;
import ru.noties.markwon.html.TagHandler; import ru.noties.markwon.html.tag.ImageHandler;
import ru.noties.markwon.html.impl.tag.BlockquoteHandler; import ru.noties.markwon.html.tag.LinkHandler;
import ru.noties.markwon.html.impl.tag.EmphasisHandler; import ru.noties.markwon.html.tag.ListHandler;
import ru.noties.markwon.html.impl.tag.HeadingHandler; import ru.noties.markwon.html.tag.StrikeHandler;
import ru.noties.markwon.html.impl.tag.ImageHandler; import ru.noties.markwon.html.tag.StrongEmphasisHandler;
import ru.noties.markwon.html.impl.tag.LinkHandler; import ru.noties.markwon.html.tag.SubScriptHandler;
import ru.noties.markwon.html.impl.tag.ListHandler; import ru.noties.markwon.html.tag.SuperScriptHandler;
import ru.noties.markwon.html.impl.tag.StrikeHandler; import ru.noties.markwon.html.tag.UnderlineHandler;
import ru.noties.markwon.html.impl.tag.StrongEmphasisHandler;
import ru.noties.markwon.html.impl.tag.SubScriptHandler;
import ru.noties.markwon.html.impl.tag.SuperScriptHandler;
import ru.noties.markwon.html.impl.tag.UnderlineHandler;
public class MarkwonHtmlRendererImpl extends MarkwonHtmlRenderer { public class MarkwonHtmlRendererImpl extends MarkwonHtmlRenderer {
@ -130,7 +126,7 @@ public class MarkwonHtmlRendererImpl extends MarkwonHtmlRenderer {
handler = tagHandler(inline.name()); handler = tagHandler(inline.name());
if (handler != null) { if (handler != null) {
handler.handle(configuration, builder, inline); handler.handle(configuration, MarkwonHtmlRendererImpl.this, builder, inline);
} }
} }
} }
@ -150,7 +146,7 @@ public class MarkwonHtmlRendererImpl extends MarkwonHtmlRenderer {
handler = tagHandler(block.name()); handler = tagHandler(block.name());
if (handler != null) { if (handler != null) {
handler.handle(configuration, builder, block); handler.handle(configuration, MarkwonHtmlRendererImpl.this, builder, block);
} else { } else {
// see if any of children can be handled // see if any of children can be handled
apply(block.children()); apply(block.children());

View File

@ -9,12 +9,14 @@ public abstract class TagHandler {
public abstract void handle( public abstract void handle(
@NonNull MarkwonConfiguration configuration, @NonNull MarkwonConfiguration configuration,
@NonNull MarkwonHtmlRenderer renderer,
@NonNull SpannableBuilder builder, @NonNull SpannableBuilder builder,
@NonNull HtmlTag tag @NonNull HtmlTag tag
); );
protected static void visitChildren( protected static void visitChildren(
@NonNull MarkwonConfiguration configuration, @NonNull MarkwonConfiguration configuration,
@NonNull MarkwonHtmlRenderer renderer,
@NonNull SpannableBuilder builder, @NonNull SpannableBuilder builder,
@NonNull HtmlTag.Block block) { @NonNull HtmlTag.Block block) {
@ -26,11 +28,11 @@ public abstract class TagHandler {
continue; continue;
} }
handler = configuration.htmlRenderer().tagHandler(child.name()); handler = renderer.tagHandler(child.name());
if (handler != null) { if (handler != null) {
handler.handle(configuration, builder, child); handler.handle(configuration, renderer, builder, child);
} else { } else {
visitChildren(configuration, builder, child); visitChildren(configuration, renderer, builder, child);
} }
} }
} }

View File

@ -1,8 +1,8 @@
package ru.noties.markwon.html.impl; package ru.noties.markwon.html;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import static ru.noties.markwon.html.impl.AppendableUtils.appendQuietly; import static ru.noties.markwon.html.AppendableUtils.appendQuietly;
abstract class TrimmingAppender { abstract class TrimmingAppender {

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.jsoup; package ru.noties.markwon.html.jsoup;
import java.io.IOException; import java.io.IOException;

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.jsoup.helper; package ru.noties.markwon.html.jsoup.helper;
import java.util.Locale; import java.util.Locale;

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.jsoup.helper; package ru.noties.markwon.html.jsoup.helper;
/** /**
* Simple validation methods. Designed for jsoup internal use * Simple validation methods. Designed for jsoup internal use

View File

@ -1,8 +1,8 @@
package ru.noties.markwon.html.impl.jsoup.nodes; package ru.noties.markwon.html.jsoup.nodes;
import java.util.Map; import java.util.Map;
import ru.noties.markwon.html.impl.jsoup.helper.Validate; import ru.noties.markwon.html.jsoup.helper.Validate;
/** /**
A single key + value attribute. (Only used for presentation.) A single key + value attribute. (Only used for presentation.)

View File

@ -1,14 +1,11 @@
package ru.noties.markwon.html.impl.jsoup.nodes; package ru.noties.markwon.html.jsoup.nodes;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import ru.noties.markwon.html.impl.jsoup.helper.Validate; import ru.noties.markwon.html.jsoup.helper.Validate;
import static ru.noties.markwon.html.impl.jsoup.helper.Normalizer.lowerCase; import static ru.noties.markwon.html.jsoup.helper.Normalizer.lowerCase;
/** /**
* The attributes of an Element. * The attributes of an Element.

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.jsoup.nodes; package ru.noties.markwon.html.jsoup.nodes;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.jsoup.nodes; package ru.noties.markwon.html.jsoup.nodes;
/** /**
* A {@code <!DOCTYPE>} node. * A {@code <!DOCTYPE>} node.

View File

@ -1,6 +1,4 @@
package ru.noties.markwon.html.impl.jsoup.parser; package ru.noties.markwon.html.jsoup.parser;
import android.support.annotation.NonNull;
import java.io.IOException; import java.io.IOException;
import java.io.Reader; import java.io.Reader;
@ -8,8 +6,8 @@ import java.io.StringReader;
import java.util.Arrays; import java.util.Arrays;
import java.util.Locale; import java.util.Locale;
import ru.noties.markwon.html.impl.jsoup.UncheckedIOException; import ru.noties.markwon.html.jsoup.UncheckedIOException;
import ru.noties.markwon.html.impl.jsoup.helper.Validate; import ru.noties.markwon.html.jsoup.helper.Validate;
/** /**
* CharacterReader consumes tokens off a string. Used internally by jsoup. API subject to changes. * CharacterReader consumes tokens off a string. Used internally by jsoup. API subject to changes.

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.jsoup.parser; package ru.noties.markwon.html.jsoup.parser;
/** /**
* A Parse Error records an error in the input HTML that occurs in either the tokenisation or the tree building phase. * A Parse Error records an error in the input HTML that occurs in either the tokenisation or the tree building phase.

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.jsoup.parser; package ru.noties.markwon.html.jsoup.parser;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -1,11 +1,11 @@
package ru.noties.markwon.html.impl.jsoup.parser; package ru.noties.markwon.html.jsoup.parser;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import ru.noties.markwon.html.impl.jsoup.helper.Validate; import ru.noties.markwon.html.jsoup.helper.Validate;
import ru.noties.markwon.html.impl.jsoup.nodes.Attributes; import ru.noties.markwon.html.jsoup.nodes.Attributes;
import static ru.noties.markwon.html.impl.jsoup.helper.Normalizer.lowerCase; import static ru.noties.markwon.html.jsoup.helper.Normalizer.lowerCase;
/** /**
* Parse tokens for the Tokeniser. * Parse tokens for the Tokeniser.

View File

@ -1,9 +1,9 @@
package ru.noties.markwon.html.impl.jsoup.parser; package ru.noties.markwon.html.jsoup.parser;
import java.util.Arrays; import java.util.Arrays;
import ru.noties.markwon.html.impl.jsoup.helper.Validate; import ru.noties.markwon.html.jsoup.helper.Validate;
import ru.noties.markwon.html.impl.jsoup.nodes.CommonMarkEntities; import ru.noties.markwon.html.jsoup.nodes.CommonMarkEntities;
/** /**
* Readers the input stream into tokens. * Readers the input stream into tokens.

View File

@ -1,6 +1,6 @@
package ru.noties.markwon.html.impl.jsoup.parser; package ru.noties.markwon.html.jsoup.parser;
import ru.noties.markwon.html.impl.jsoup.nodes.DocumentType; import ru.noties.markwon.html.jsoup.nodes.DocumentType;
/** /**
* States and transition activations for the Tokeniser. * States and transition activations for the Tokeniser.

View File

@ -1,10 +1,10 @@
package ru.noties.markwon.html.impl.span; package ru.noties.markwon.html.span;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.text.TextPaint; import android.text.TextPaint;
import android.text.style.MetricAffectingSpan; import android.text.style.MetricAffectingSpan;
import ru.noties.markwon.html.impl.MarkwonHtmlRendererImpl; import ru.noties.markwon.html.MarkwonHtmlRendererImpl;
public class SubScriptSpan extends MetricAffectingSpan { public class SubScriptSpan extends MetricAffectingSpan {

View File

@ -1,10 +1,10 @@
package ru.noties.markwon.html.impl.span; package ru.noties.markwon.html.span;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.text.TextPaint; import android.text.TextPaint;
import android.text.style.MetricAffectingSpan; import android.text.style.MetricAffectingSpan;
import ru.noties.markwon.html.impl.MarkwonHtmlRendererImpl; import ru.noties.markwon.html.MarkwonHtmlRendererImpl;
public class SuperScriptSpan extends MetricAffectingSpan { public class SuperScriptSpan extends MetricAffectingSpan {

View File

@ -1,10 +1,11 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.SpannableBuilder; import ru.noties.markwon.SpannableBuilder;
import ru.noties.markwon.html.HtmlTag; import ru.noties.markwon.html.HtmlTag;
import ru.noties.markwon.html.MarkwonHtmlRenderer;
import ru.noties.markwon.html.TagHandler; import ru.noties.markwon.html.TagHandler;
public class BlockquoteHandler extends TagHandler { public class BlockquoteHandler extends TagHandler {
@ -12,11 +13,12 @@ public class BlockquoteHandler extends TagHandler {
@Override @Override
public void handle( public void handle(
@NonNull MarkwonConfiguration configuration, @NonNull MarkwonConfiguration configuration,
@NonNull MarkwonHtmlRenderer renderer,
@NonNull SpannableBuilder builder, @NonNull SpannableBuilder builder,
@NonNull HtmlTag tag) { @NonNull HtmlTag tag) {
if (tag.isBlock()) { if (tag.isBlock()) {
visitChildren(configuration, builder, tag.getAsBlock()); visitChildren(configuration, renderer, builder, tag.getAsBlock());
} }
SpannableBuilder.setSpans( SpannableBuilder.setSpans(

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -8,7 +8,7 @@ import java.util.Map;
import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.html.HtmlTag; import ru.noties.markwon.html.HtmlTag;
import ru.noties.markwon.html.impl.CssInlineStyleParser; import ru.noties.markwon.html.CssInlineStyleParser;
import ru.noties.markwon.image.ImageSize; import ru.noties.markwon.image.ImageSize;
public class ImageHandler extends SimpleTagHandler { public class ImageHandler extends SimpleTagHandler {

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -7,8 +7,8 @@ import android.text.TextUtils;
import java.util.Map; import java.util.Map;
import ru.noties.markwon.html.impl.CssInlineStyleParser; import ru.noties.markwon.html.CssInlineStyleParser;
import ru.noties.markwon.html.impl.CssProperty; import ru.noties.markwon.html.CssProperty;
import ru.noties.markwon.image.ImageSize; import ru.noties.markwon.image.ImageSize;
class ImageSizeParserImpl implements ImageHandler.ImageSizeParser { class ImageSizeParserImpl implements ImageHandler.ImageSizeParser {

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;

View File

@ -1,10 +1,11 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.SpannableBuilder; import ru.noties.markwon.SpannableBuilder;
import ru.noties.markwon.html.HtmlTag; import ru.noties.markwon.html.HtmlTag;
import ru.noties.markwon.html.MarkwonHtmlRenderer;
import ru.noties.markwon.html.TagHandler; import ru.noties.markwon.html.TagHandler;
public class ListHandler extends TagHandler { public class ListHandler extends TagHandler {
@ -12,6 +13,7 @@ public class ListHandler extends TagHandler {
@Override @Override
public void handle( public void handle(
@NonNull MarkwonConfiguration configuration, @NonNull MarkwonConfiguration configuration,
@NonNull MarkwonHtmlRenderer renderer,
@NonNull SpannableBuilder builder, @NonNull SpannableBuilder builder,
@NonNull HtmlTag tag) { @NonNull HtmlTag tag) {
@ -34,7 +36,7 @@ public class ListHandler extends TagHandler {
for (HtmlTag.Block child : block.children()) { for (HtmlTag.Block child : block.children()) {
visitChildren(configuration, builder, child); visitChildren(configuration, renderer, builder, child);
if ("li".equals(child.name())) { if ("li".equals(child.name())) {
// insert list item here // insert list item here

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
@ -6,6 +6,7 @@ import android.support.annotation.Nullable;
import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.SpannableBuilder; import ru.noties.markwon.SpannableBuilder;
import ru.noties.markwon.html.HtmlTag; import ru.noties.markwon.html.HtmlTag;
import ru.noties.markwon.html.MarkwonHtmlRenderer;
import ru.noties.markwon.html.TagHandler; import ru.noties.markwon.html.TagHandler;
public abstract class SimpleTagHandler extends TagHandler { public abstract class SimpleTagHandler extends TagHandler {
@ -14,7 +15,7 @@ public abstract class SimpleTagHandler extends TagHandler {
public abstract Object getSpans(@NonNull MarkwonConfiguration configuration, @NonNull HtmlTag tag); public abstract Object getSpans(@NonNull MarkwonConfiguration configuration, @NonNull HtmlTag tag);
@Override @Override
public void handle(@NonNull MarkwonConfiguration configuration, @NonNull SpannableBuilder builder, @NonNull HtmlTag tag) { public void handle(@NonNull MarkwonConfiguration configuration, @NonNull MarkwonHtmlRenderer renderer, @NonNull SpannableBuilder builder, @NonNull HtmlTag tag) {
final Object spans = getSpans(configuration, tag); final Object spans = getSpans(configuration, tag);
if (spans != null) { if (spans != null) {
SpannableBuilder.setSpans(builder, spans, tag.start(), tag.end()); SpannableBuilder.setSpans(builder, spans, tag.start(), tag.end());

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.text.style.StrikethroughSpan; import android.text.style.StrikethroughSpan;
@ -6,6 +6,7 @@ import android.text.style.StrikethroughSpan;
import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.SpannableBuilder; import ru.noties.markwon.SpannableBuilder;
import ru.noties.markwon.html.HtmlTag; import ru.noties.markwon.html.HtmlTag;
import ru.noties.markwon.html.MarkwonHtmlRenderer;
import ru.noties.markwon.html.TagHandler; import ru.noties.markwon.html.TagHandler;
public class StrikeHandler extends TagHandler { public class StrikeHandler extends TagHandler {
@ -13,11 +14,12 @@ public class StrikeHandler extends TagHandler {
@Override @Override
public void handle( public void handle(
@NonNull MarkwonConfiguration configuration, @NonNull MarkwonConfiguration configuration,
@NonNull MarkwonHtmlRenderer renderer,
@NonNull SpannableBuilder builder, @NonNull SpannableBuilder builder,
@NonNull HtmlTag tag) { @NonNull HtmlTag tag) {
if (tag.isBlock()) { if (tag.isBlock()) {
visitChildren(configuration, builder, tag.getAsBlock()); visitChildren(configuration, renderer, builder, tag.getAsBlock());
} }
SpannableBuilder.setSpans( SpannableBuilder.setSpans(

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;

View File

@ -1,11 +1,11 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.html.HtmlTag; import ru.noties.markwon.html.HtmlTag;
import ru.noties.markwon.html.impl.span.SubScriptSpan; import ru.noties.markwon.html.span.SubScriptSpan;
public class SubScriptHandler extends SimpleTagHandler { public class SubScriptHandler extends SimpleTagHandler {
@Nullable @Nullable

View File

@ -1,11 +1,11 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.html.HtmlTag; import ru.noties.markwon.html.HtmlTag;
import ru.noties.markwon.html.impl.span.SuperScriptSpan; import ru.noties.markwon.html.span.SuperScriptSpan;
public class SuperScriptHandler extends SimpleTagHandler { public class SuperScriptHandler extends SimpleTagHandler {
@Nullable @Nullable

View File

@ -1,4 +1,4 @@
package ru.noties.markwon.html.impl.tag; package ru.noties.markwon.html.tag;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.text.style.UnderlineSpan; import android.text.style.UnderlineSpan;
@ -6,6 +6,7 @@ import android.text.style.UnderlineSpan;
import ru.noties.markwon.MarkwonConfiguration; import ru.noties.markwon.MarkwonConfiguration;
import ru.noties.markwon.SpannableBuilder; import ru.noties.markwon.SpannableBuilder;
import ru.noties.markwon.html.HtmlTag; import ru.noties.markwon.html.HtmlTag;
import ru.noties.markwon.html.MarkwonHtmlRenderer;
import ru.noties.markwon.html.TagHandler; import ru.noties.markwon.html.TagHandler;
public class UnderlineHandler extends TagHandler { public class UnderlineHandler extends TagHandler {
@ -13,6 +14,7 @@ public class UnderlineHandler extends TagHandler {
@Override @Override
public void handle( public void handle(
@NonNull MarkwonConfiguration configuration, @NonNull MarkwonConfiguration configuration,
@NonNull MarkwonHtmlRenderer renderer,
@NonNull SpannableBuilder builder, @NonNull SpannableBuilder builder,
@NonNull HtmlTag tag) { @NonNull HtmlTag tag) {
@ -20,7 +22,7 @@ public class UnderlineHandler extends TagHandler {
// thus doesn't allow children, we must visit them first // thus doesn't allow children, we must visit them first
if (tag.isBlock()) { if (tag.isBlock()) {
visitChildren(configuration, builder, tag.getAsBlock()); visitChildren(configuration, renderer, builder, tag.getAsBlock());
} }
SpannableBuilder.setSpans( SpannableBuilder.setSpans(

View File

@ -14,6 +14,8 @@ import java.util.Map;
import ix.Ix; import ix.Ix;
import ix.IxFunction; import ix.IxFunction;
import ru.noties.markwon.html.CssInlineStyleParser;
import ru.noties.markwon.html.CssProperty;
import ru.noties.markwon.test.TestUtils; import ru.noties.markwon.test.TestUtils;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;

View File

@ -5,8 +5,9 @@ import org.junit.Test;
import java.util.Collections; import java.util.Collections;
import ru.noties.markwon.html.HtmlEmptyTagReplacement;
import ru.noties.markwon.html.api.HtmlTag; import ru.noties.markwon.html.api.HtmlTag;
import ru.noties.markwon.html.impl.HtmlTagImpl.InlineImpl; import ru.noties.markwon.html.HtmlTagImpl.InlineImpl;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;

View File

@ -15,6 +15,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import ru.noties.markwon.html.HtmlEmptyTagReplacement;
import ru.noties.markwon.html.MarkwonHtmlParserImpl;
import ru.noties.markwon.html.api.HtmlTag; import ru.noties.markwon.html.api.HtmlTag;
import ru.noties.markwon.html.api.MarkwonHtmlParser; import ru.noties.markwon.html.api.MarkwonHtmlParser;

View File

@ -6,6 +6,8 @@ import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import ru.noties.markwon.html.TrimmingAppender;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)

View File

@ -5,6 +5,8 @@ import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import ru.noties.markwon.html.jsoup.nodes.CommonMarkEntities;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;

View File

@ -13,6 +13,7 @@ import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import ru.noties.markwon.html.tag.ImageSizeParserImpl;
import ru.noties.markwon.image.ImageSize; import ru.noties.markwon.image.ImageSize;
import ru.noties.markwon.renderer.html2.CssInlineStyleParser; import ru.noties.markwon.renderer.html2.CssInlineStyleParser;

View File

@ -3,10 +3,7 @@ package ru.noties.markwon;
import android.content.Context; import android.content.Context;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import ru.noties.markwon.html.MarkwonHtmlParser;
import ru.noties.markwon.html.MarkwonHtmlRenderer;
import ru.noties.markwon.image.AsyncDrawableLoader; import ru.noties.markwon.image.AsyncDrawableLoader;
import ru.noties.markwon.image.AsyncDrawableLoaderNoOp;
import ru.noties.markwon.image.ImageSizeResolver; import ru.noties.markwon.image.ImageSizeResolver;
import ru.noties.markwon.image.ImageSizeResolverDef; import ru.noties.markwon.image.ImageSizeResolverDef;
import ru.noties.markwon.spans.LinkSpan; import ru.noties.markwon.spans.LinkSpan;
@ -20,8 +17,9 @@ public class MarkwonConfiguration {
// creates default configuration // creates default configuration
@NonNull @NonNull
@Deprecated
public static MarkwonConfiguration create(@NonNull Context context) { public static MarkwonConfiguration create(@NonNull Context context) {
return new Builder(context).build(MarkwonTheme.create(context), new AsyncDrawableLoaderNoOp()); return new Builder(context).build(MarkwonTheme.create(context), AsyncDrawableLoader.noOp());
} }
@NonNull @NonNull
@ -37,8 +35,6 @@ public class MarkwonConfiguration {
private final UrlProcessor urlProcessor; private final UrlProcessor urlProcessor;
private final ImageSizeResolver imageSizeResolver; private final ImageSizeResolver imageSizeResolver;
private final SpannableFactory factory; // @since 1.1.0 private final SpannableFactory factory; // @since 1.1.0
private final MarkwonHtmlParser htmlParser; // @since 2.0.0
private final MarkwonHtmlRenderer htmlRenderer; // @since 2.0.0
private MarkwonConfiguration(@NonNull Builder builder) { private MarkwonConfiguration(@NonNull Builder builder) {
this.theme = builder.theme; this.theme = builder.theme;
@ -48,8 +44,6 @@ public class MarkwonConfiguration {
this.urlProcessor = builder.urlProcessor; this.urlProcessor = builder.urlProcessor;
this.imageSizeResolver = builder.imageSizeResolver; this.imageSizeResolver = builder.imageSizeResolver;
this.factory = builder.factory; this.factory = builder.factory;
this.htmlParser = builder.htmlParser;
this.htmlRenderer = builder.htmlRenderer;
} }
/** /**
@ -95,22 +89,6 @@ public class MarkwonConfiguration {
return factory; return factory;
} }
/**
* @since 2.0.0
*/
@NonNull
public MarkwonHtmlParser htmlParser() {
return htmlParser;
}
/**
* @since 2.0.0
*/
@NonNull
public MarkwonHtmlRenderer htmlRenderer() {
return htmlRenderer;
}
@SuppressWarnings("unused") @SuppressWarnings("unused")
public static class Builder { public static class Builder {
@ -123,8 +101,6 @@ public class MarkwonConfiguration {
private UrlProcessor urlProcessor; private UrlProcessor urlProcessor;
private ImageSizeResolver imageSizeResolver; private ImageSizeResolver imageSizeResolver;
private SpannableFactory factory; // @since 1.1.0 private SpannableFactory factory; // @since 1.1.0
private MarkwonHtmlParser htmlParser; // @since 2.0.0
private MarkwonHtmlRenderer htmlRenderer; // @since 2.0.0
Builder(@NonNull Context context) { Builder(@NonNull Context context) {
this.context = context; this.context = context;
@ -139,8 +115,6 @@ public class MarkwonConfiguration {
this.urlProcessor = configuration.urlProcessor; this.urlProcessor = configuration.urlProcessor;
this.imageSizeResolver = configuration.imageSizeResolver; this.imageSizeResolver = configuration.imageSizeResolver;
this.factory = configuration.factory; this.factory = configuration.factory;
this.htmlParser = configuration.htmlParser;
this.htmlRenderer = configuration.htmlRenderer;
} }
@NonNull @NonNull
@ -179,24 +153,6 @@ public class MarkwonConfiguration {
return this; return this;
} }
/**
* @since 2.0.0
*/
@NonNull
public Builder htmlParser(@NonNull MarkwonHtmlParser htmlParser) {
this.htmlParser = htmlParser;
return this;
}
/**
* @since 2.0.0
*/
@NonNull
public Builder htmlRenderer(@NonNull MarkwonHtmlRenderer htmlRenderer) {
this.htmlRenderer = htmlRenderer;
return this;
}
@NonNull @NonNull
public MarkwonConfiguration build(@NonNull MarkwonTheme theme, @NonNull AsyncDrawableLoader asyncDrawableLoader) { public MarkwonConfiguration build(@NonNull MarkwonTheme theme, @NonNull AsyncDrawableLoader asyncDrawableLoader) {
@ -224,16 +180,6 @@ public class MarkwonConfiguration {
factory = SpannableFactoryDef.create(); factory = SpannableFactoryDef.create();
} }
// @since 2.0.0
if (htmlParser == null) {
htmlParser = MarkwonHtmlParser.noOp();
}
// @since 2.0.0
if (htmlRenderer == null) {
htmlRenderer = MarkwonHtmlRenderer.noOp();
}
return new MarkwonConfiguration(this); return new MarkwonConfiguration(this);
} }
} }

View File

@ -12,6 +12,22 @@ import java.util.concurrent.Executors;
public abstract class AsyncDrawableLoader { public abstract class AsyncDrawableLoader {
/**
* @since 3.0.0
*/
@NonNull
public static Builder builder() {
return new Builder();
}
/**
* @since 3.0.0
*/
@NonNull
public static AsyncDrawableLoader noOp() {
return new AsyncDrawableLoaderNoOp();
}
public abstract void load(@NonNull String destination, @NonNull AsyncDrawable drawable); public abstract void load(@NonNull String destination, @NonNull AsyncDrawable drawable);

View File

@ -2,7 +2,7 @@ package ru.noties.markwon.image;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
public class AsyncDrawableLoaderNoOp extends AsyncDrawableLoader { class AsyncDrawableLoaderNoOp extends AsyncDrawableLoader {
@Override @Override
public void load(@NonNull String destination, @NonNull AsyncDrawable drawable) { public void load(@NonNull String destination, @NonNull AsyncDrawable drawable) {