diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1cf83a05..96db5266 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -41,17 +41,17 @@ - + - + - + diff --git a/app/src/main/java/ru/noties/markwon/MainActivity.java b/app/src/main/java/ru/noties/markwon/MainActivity.java index a14caf2e..bd477bcd 100644 --- a/app/src/main/java/ru/noties/markwon/MainActivity.java +++ b/app/src/main/java/ru/noties/markwon/MainActivity.java @@ -71,7 +71,7 @@ public class MainActivity extends Activity { .use(new CorePlugin()) .use(TaskListPlugin.create(new TaskListDrawable(0xffff0000, 0xffff0000, -1))) .build(); - final CharSequence markdown = markwon2.markdown("**hello _dear_** `code`\n\n- [ ] first\n- [x] second"); + final CharSequence markdown = markwon2.toMarkdown("**hello _dear_** `code`\n\n- [ ] first\n- [x] second"); textView.setText(markdown); return; } diff --git a/app/src/main/java/ru/noties/markwon/MarkdownRenderer.java b/app/src/main/java/ru/noties/markwon/MarkdownRenderer.java index 9151b115..f0eb38e5 100644 --- a/app/src/main/java/ru/noties/markwon/MarkdownRenderer.java +++ b/app/src/main/java/ru/noties/markwon/MarkdownRenderer.java @@ -104,7 +104,7 @@ public class MarkdownRenderer { final long end = SystemClock.uptimeMillis(); - Debug.i("markdown rendered: %d ms", end - start); + Debug.i("toMarkdown rendered: %d ms", end - start); if (!isCancelled()) { handler.post(new Runnable() { diff --git a/markwon-view/src/main/java/ru/noties/markwon/view/MarkwonViewHelper.java b/markwon-view/src/main/java/ru/noties/markwon/view/MarkwonViewHelper.java index f3669b77..95518023 100644 --- a/markwon-view/src/main/java/ru/noties/markwon/view/MarkwonViewHelper.java +++ b/markwon-view/src/main/java/ru/noties/markwon/view/MarkwonViewHelper.java @@ -60,7 +60,7 @@ public class MarkwonViewHelper implements IMarkwonView { this.provider = provider; this.configuration = provider.provide(textView.getContext()); if (!TextUtils.isEmpty(markdown)) { - // invalidate rendered markdown + // invalidate rendered toMarkdown setMarkdown(markdown); } } diff --git a/markwon/src/main/java/ru/noties/markwon/AbstractMarkwonPlugin.java b/markwon/src/main/java/ru/noties/markwon/AbstractMarkwonPlugin.java index d96e2a6d..d0187fac 100644 --- a/markwon/src/main/java/ru/noties/markwon/AbstractMarkwonPlugin.java +++ b/markwon/src/main/java/ru/noties/markwon/AbstractMarkwonPlugin.java @@ -35,12 +35,12 @@ public abstract class AbstractMarkwonPlugin implements MarkwonPlugin { } @Override - public void beforeSetText(@NonNull TextView textView, @NonNull SpannableBuilder builder) { + public void beforeSetText(@NonNull TextView textView, @NonNull CharSequence markdown) { } @Override - public void afterSetText(@NonNull TextView textView, @NonNull SpannableBuilder builder) { + public void afterSetText(@NonNull TextView textView, @NonNull CharSequence markdown) { } } diff --git a/markwon/src/main/java/ru/noties/markwon/Markwon.java b/markwon/src/main/java/ru/noties/markwon/Markwon.java index c7fdf550..5728f21a 100644 --- a/markwon/src/main/java/ru/noties/markwon/Markwon.java +++ b/markwon/src/main/java/ru/noties/markwon/Markwon.java @@ -48,12 +48,12 @@ public abstract class Markwon { } /** - * Parses submitted raw markdown, converts it to CharSequence (with Spannables) + * Parses submitted raw toMarkdown, converts it to CharSequence (with Spannables) * and applies it to view * - * @param view {@link TextView} to set markdown into + * @param view {@link TextView} to set toMarkdown into * @param configuration a {@link MarkwonConfiguration} instance - * @param markdown raw markdown String (for example: {@code `**Hello**`}) + * @param markdown raw toMarkdown String (for example: {@code `**Hello**`}) * @see #markdown(MarkwonConfiguration, String) * @see #setText(TextView, CharSequence) * @see MarkwonConfiguration @@ -69,13 +69,13 @@ public abstract class Markwon { } /** - * Helper method to apply parsed markdown. + * Helper method to apply parsed toMarkdown. *
* Since 1.0.6 redirects it\'s call to {@link #setText(TextView, CharSequence, MovementMethod)}
* with LinkMovementMethod as an argument to preserve current API.
*
- * @param view {@link TextView} to set markdown into
- * @param text parsed markdown
+ * @param view {@link TextView} to set toMarkdown into
+ * @param text parsed toMarkdown
* @see #setText(TextView, CharSequence, MovementMethod)
* @since 1.0.0
*/
@@ -84,13 +84,13 @@ public abstract class Markwon {
}
/**
- * Helper method to apply parsed markdown with additional argument of a MovementMethod. Used
+ * Helper method to apply parsed toMarkdown with additional argument of a MovementMethod. Used
* to workaround problems that occur when using system LinkMovementMethod (for example:
* https://issuetracker.google.com/issues/37068143). As a better alternative to it consider
* using: https://github.com/saket/Better-Link-Movement-Method
*
- * @param view TextView to set markdown into
- * @param text parsed markdown
+ * @param view TextView to set toMarkdown into
+ * @param text parsed toMarkdown
* @param movementMethod an implementation if MovementMethod or null
* @see #scheduleDrawables(TextView)
* @see #scheduleTableRows(TextView)
@@ -102,7 +102,7 @@ public abstract class Markwon {
unscheduleTableRows(view);
// @since 2.0.1 we must measure ordered-list-item-spans before applying text to a TextView.
- // if markdown has a lot of ordered list items (or text size is relatively big, or block-margin
+ // if toMarkdown has a lot of ordered list items (or text size is relatively big, or block-margin
// is relatively small) then this list won't be rendered properly: it will take correct
// layout (width and margin) but will be clipped if margin is not _consistent_ between calls.
OrderedListItemSpan.measure(view, text);
@@ -117,11 +117,11 @@ public abstract class Markwon {
}
/**
- * Returns parsed markdown with default {@link MarkwonConfiguration} obtained from {@link Context}
+ * Returns parsed toMarkdown with default {@link MarkwonConfiguration} obtained from {@link Context}
*
* @param context {@link Context}
- * @param markdown raw markdown
- * @return parsed markdown
+ * @param markdown raw toMarkdown
+ * @return parsed toMarkdown
* @since 1.0.0
*/
@NonNull
@@ -131,11 +131,11 @@ public abstract class Markwon {
}
/**
- * Returns parsed markdown with provided {@link MarkwonConfiguration}
+ * Returns parsed toMarkdown with provided {@link MarkwonConfiguration}
*
* @param configuration a {@link MarkwonConfiguration}
- * @param markdown raw markdown
- * @return parsed markdown
+ * @param markdown raw toMarkdown
+ * @return parsed toMarkdown
* @see MarkwonConfiguration
* @since 1.0.0
*/
diff --git a/markwon/src/main/java/ru/noties/markwon/Markwon2.java b/markwon/src/main/java/ru/noties/markwon/Markwon2.java
index 59feb9a5..734a9ee3 100644
--- a/markwon/src/main/java/ru/noties/markwon/Markwon2.java
+++ b/markwon/src/main/java/ru/noties/markwon/Markwon2.java
@@ -2,6 +2,7 @@ package ru.noties.markwon;
import android.content.Context;
import android.support.annotation.NonNull;
+import android.widget.TextView;
import org.commonmark.node.Node;
@@ -18,8 +19,13 @@ public abstract class Markwon2 {
@NonNull
public abstract CharSequence render(@NonNull Node node);
+ // parse + render
@NonNull
- public abstract CharSequence markdown(@NonNull String input);
+ public abstract CharSequence toMarkdown(@NonNull String input);
+
+ public abstract void setMarkdown(@NonNull TextView textView, @NonNull String markdown);
+
+ public abstract void setParsedMarkdown(@NonNull TextView textView, @NonNull CharSequence markdown);
public interface Builder {
diff --git a/markwon/src/main/java/ru/noties/markwon/MarkwonBuilderImpl.java b/markwon/src/main/java/ru/noties/markwon/MarkwonBuilderImpl.java
index 635e3138..841c70d4 100644
--- a/markwon/src/main/java/ru/noties/markwon/MarkwonBuilderImpl.java
+++ b/markwon/src/main/java/ru/noties/markwon/MarkwonBuilderImpl.java
@@ -46,7 +46,7 @@ class MarkwonBuilderImpl implements Markwon2.Builder {
return new MarkwonImpl(
parserBuilder.build(),
- visitorBuilder.build(themeBuilder.build(), configurationBuilder.build()),
+ visitorBuilder.build(configurationBuilder.build(themeBuilder.build())),
Collections.unmodifiableList(plugins)
);
}
diff --git a/markwon/src/main/java/ru/noties/markwon/MarkwonConfiguration.java b/markwon/src/main/java/ru/noties/markwon/MarkwonConfiguration.java
index 510f10b1..82d48f4f 100644
--- a/markwon/src/main/java/ru/noties/markwon/MarkwonConfiguration.java
+++ b/markwon/src/main/java/ru/noties/markwon/MarkwonConfiguration.java
@@ -20,7 +20,7 @@ public class MarkwonConfiguration {
// creates default configuration
@NonNull
public static MarkwonConfiguration create(@NonNull Context context) {
- return new Builder(context).build();
+ return new Builder(context).build(MarkwonTheme.create(context));
}
@NonNull
@@ -28,9 +28,8 @@ public class MarkwonConfiguration {
return new Builder(context);
}
- @Deprecated
- private final MarkwonTheme theme;
+ private final MarkwonTheme theme;
private final AsyncDrawable.Loader asyncDrawableLoader;
private final SyntaxHighlight syntaxHighlight;
private final LinkSpan.Resolver linkResolver;
@@ -65,7 +64,6 @@ public class MarkwonConfiguration {
}
@NonNull
- @Deprecated
public MarkwonTheme theme() {
return theme;
}
@@ -137,7 +135,6 @@ public class MarkwonConfiguration {
private final Context context;
- @Deprecated
private MarkwonTheme theme;
private AsyncDrawable.Loader asyncDrawableLoader;
private SyntaxHighlight syntaxHighlight;
@@ -169,12 +166,12 @@ public class MarkwonConfiguration {
this.htmlAllowNonClosedTags = configuration.htmlAllowNonClosedTags;
}
- @NonNull
- @Deprecated
- public Builder theme(@NonNull MarkwonTheme theme) {
- this.theme = theme;
- return this;
- }
+// @NonNull
+// @Deprecated
+// public Builder theme(@NonNull MarkwonTheme theme) {
+// this.theme = theme;
+// return this;
+// }
@NonNull
public Builder asyncDrawableLoader(@NonNull AsyncDrawable.Loader asyncDrawableLoader) {
@@ -263,11 +260,9 @@ public class MarkwonConfiguration {
}
@NonNull
- public MarkwonConfiguration build() {
+ public MarkwonConfiguration build(@NonNull MarkwonTheme theme) {
- if (theme == null) {
- theme = MarkwonTheme.create(context);
- }
+ this.theme = theme;
if (asyncDrawableLoader == null) {
asyncDrawableLoader = new AsyncDrawableLoaderNoOp();
diff --git a/markwon/src/main/java/ru/noties/markwon/MarkwonImpl.java b/markwon/src/main/java/ru/noties/markwon/MarkwonImpl.java
index 0252568e..db38e183 100644
--- a/markwon/src/main/java/ru/noties/markwon/MarkwonImpl.java
+++ b/markwon/src/main/java/ru/noties/markwon/MarkwonImpl.java
@@ -1,6 +1,7 @@
package ru.noties.markwon;
import android.support.annotation.NonNull;
+import android.widget.TextView;
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
@@ -42,7 +43,26 @@ class MarkwonImpl extends Markwon2 {
@NonNull
@Override
- public CharSequence markdown(@NonNull String input) {
+ public CharSequence toMarkdown(@NonNull String input) {
return render(parse(input));
}
+
+ @Override
+ public void setMarkdown(@NonNull TextView textView, @NonNull String markdown) {
+ setParsedMarkdown(textView, toMarkdown(markdown));
+ }
+
+ @Override
+ public void setParsedMarkdown(@NonNull TextView textView, @NonNull CharSequence markdown) {
+
+ for (MarkwonPlugin plugin : plugins) {
+ plugin.beforeSetText(textView, markdown);
+ }
+
+ textView.setText(markdown);
+
+ for (MarkwonPlugin plugin : plugins) {
+ plugin.afterSetText(textView, markdown);
+ }
+ }
}
diff --git a/markwon/src/main/java/ru/noties/markwon/MarkwonPlugin.java b/markwon/src/main/java/ru/noties/markwon/MarkwonPlugin.java
index 48e3674e..bd54d1d0 100644
--- a/markwon/src/main/java/ru/noties/markwon/MarkwonPlugin.java
+++ b/markwon/src/main/java/ru/noties/markwon/MarkwonPlugin.java
@@ -23,7 +23,7 @@ public interface MarkwonPlugin {
@NonNull
String processMarkdown(@NonNull String markdown);
- void beforeSetText(@NonNull TextView textView, @NonNull SpannableBuilder builder);
+ void beforeSetText(@NonNull TextView textView, @NonNull CharSequence markdown);
- void afterSetText(@NonNull TextView textView, @NonNull SpannableBuilder builder);
+ void afterSetText(@NonNull TextView textView, @NonNull CharSequence markdown);
}
diff --git a/markwon/src/main/java/ru/noties/markwon/MarkwonVisitor.java b/markwon/src/main/java/ru/noties/markwon/MarkwonVisitor.java
index 58c28111..12a912fc 100644
--- a/markwon/src/main/java/ru/noties/markwon/MarkwonVisitor.java
+++ b/markwon/src/main/java/ru/noties/markwon/MarkwonVisitor.java
@@ -20,14 +20,17 @@ public interface MarkwonVisitor extends Visitor {