diff --git a/markwon-view-common/README.md b/markwon-view-common/README.md
new file mode 100644
index 00000000..16e6d5a4
--- /dev/null
+++ b/markwon-view-common/README.md
@@ -0,0 +1,22 @@
+# Markwon View Common
+
+[](http://search.maven.org/#search|ga|1|g%3A%22ru.noties%22%20AND%20a%3A%markwon-view%22)
+
+This library is the backbone of `MarkwonView` and `MarkwonViewCompat` and acts as glue code to `Markwon` by exposing `IMarkwonView`:
+```java
+public interface IMarkwonView {
+
+ interface ConfigurationProvider {
+ @NonNull
+ SpannableConfiguration provide(@NonNull Context context);
+ }
+
+ void setConfigurationProvider(@NonNull ConfigurationProvider provider);
+
+ void setMarkdown(@Nullable String markdown);
+ void setMarkdown(@Nullable SpannableConfiguration configuration, @Nullable String markdown);
+
+ @Nullable
+ String getMarkdown();
+}
+```
\ No newline at end of file
diff --git a/markwon-view-common/build.gradle b/markwon-view-common/build.gradle
new file mode 100644
index 00000000..cd01be3c
--- /dev/null
+++ b/markwon-view-common/build.gradle
@@ -0,0 +1,20 @@
+apply plugin: 'com.android.library'
+
+android {
+
+ compileSdkVersion config['compile-sdk']
+ buildToolsVersion config['build-tools']
+
+ defaultConfig {
+ minSdkVersion config['min-sdk']
+ targetSdkVersion config['target-sdk']
+ versionCode 1
+ versionName version
+ }
+}
+
+dependencies {
+ api project(':markwon')
+}
+
+registerArtifact(this)
diff --git a/markwon-view-common/gradle.properties b/markwon-view-common/gradle.properties
new file mode 100644
index 00000000..ed244110
--- /dev/null
+++ b/markwon-view-common/gradle.properties
@@ -0,0 +1,3 @@
+POM_NAME=Markwon-View
+POM_ARTIFACT_ID=markwon-view-common
+POM_PACKAGING=aar
\ No newline at end of file
diff --git a/markwon-view/src/debug/java/ru/noties/markwon/view/debug/DebugConfigurationProvider.java b/markwon-view-common/src/debug/java/ru/noties/markwon/view/debug/DebugConfigurationProvider.java
similarity index 100%
rename from markwon-view/src/debug/java/ru/noties/markwon/view/debug/DebugConfigurationProvider.java
rename to markwon-view-common/src/debug/java/ru/noties/markwon/view/debug/DebugConfigurationProvider.java
diff --git a/markwon-view/src/debug/res/values/debug_strings.xml b/markwon-view-common/src/debug/res/values/debug_strings.xml
similarity index 100%
rename from markwon-view/src/debug/res/values/debug_strings.xml
rename to markwon-view-common/src/debug/res/values/debug_strings.xml
diff --git a/markwon-view-common/src/main/AndroidManifest.xml b/markwon-view-common/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..6340e29d
--- /dev/null
+++ b/markwon-view-common/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
diff --git a/markwon-view/src/main/java/ru/noties/markwon/view/IMarkwonView.java b/markwon-view-common/src/main/java/ru/noties/markwon/view/IMarkwonView.java
similarity index 100%
rename from markwon-view/src/main/java/ru/noties/markwon/view/IMarkwonView.java
rename to markwon-view-common/src/main/java/ru/noties/markwon/view/IMarkwonView.java
diff --git a/markwon-view/src/main/java/ru/noties/markwon/view/MarkwonViewHelper.java b/markwon-view-common/src/main/java/ru/noties/markwon/view/MarkwonViewHelper.java
similarity index 100%
rename from markwon-view/src/main/java/ru/noties/markwon/view/MarkwonViewHelper.java
rename to markwon-view-common/src/main/java/ru/noties/markwon/view/MarkwonViewHelper.java
diff --git a/markwon-view/src/main/res/values/attrs.xml b/markwon-view-common/src/main/res/values/attrs.xml
similarity index 100%
rename from markwon-view/src/main/res/values/attrs.xml
rename to markwon-view-common/src/main/res/values/attrs.xml
diff --git a/markwon-view-compat/README.md b/markwon-view-compat/README.md
new file mode 100644
index 00000000..285f179f
--- /dev/null
+++ b/markwon-view-compat/README.md
@@ -0,0 +1,21 @@
+# Markwon View Compat
+
+[](http://search.maven.org/#search|ga|1|g%3A%22ru.noties%22%20AND%20a%3A%markwon-view%22)
+
+This library allows for rendering markdown through a widget `MarkwonViewCompat` and supports the following XML attributes:
+```
+app:mv_markdown="string"
+app:mv_configurationProvider="string"
+```
+
+`MarkdownViewCompat` extends Android's support library's `AppCompatTextView`. Prefer this library when you benefit from features in `AppCompatTextView`.
+
+Android Studio's layout-preview supports rendering (with some exceptions, for example, bold span is not rendered due to some limitations of layout preview) markdown text.
+
+`mv_markdown` accepts a string and represents raw markdown
+
+`mv_configurationProvider` accepts a string and represents a full class name of a class of type `ConfigurationProvider`,
+for example: `com.example.my.package.MyConfigurationProvider` (this class must have an empty constructor
+in order to be instantiated via reflection).
+
+Please note that those views parse markdown in main thread, so their usage must be for relatively small markdown portions only
\ No newline at end of file
diff --git a/markwon-view-compat/build.gradle b/markwon-view-compat/build.gradle
new file mode 100644
index 00000000..4253abfa
--- /dev/null
+++ b/markwon-view-compat/build.gradle
@@ -0,0 +1,23 @@
+apply plugin: 'com.android.library'
+
+android {
+
+ compileSdkVersion config['compile-sdk']
+ buildToolsVersion config['build-tools']
+
+ defaultConfig {
+ minSdkVersion config['min-sdk']
+ targetSdkVersion config['target-sdk']
+ versionCode 1
+ versionName version
+ }
+}
+
+dependencies {
+ api project(':markwon-view-common')
+ deps.with {
+ compileOnly it['support-app-compat']
+ }
+}
+
+registerArtifact(this)
diff --git a/markwon-view-compat/gradle.properties b/markwon-view-compat/gradle.properties
new file mode 100644
index 00000000..7c2cb779
--- /dev/null
+++ b/markwon-view-compat/gradle.properties
@@ -0,0 +1,3 @@
+POM_NAME=Markwon-View
+POM_ARTIFACT_ID=markwon-view-compat
+POM_PACKAGING=aar
\ No newline at end of file
diff --git a/markwon-view/src/debug/res/layout/debug_markwon_preview_compat.xml b/markwon-view-compat/src/debug/res/layout/debug_markwon_preview_compat.xml
similarity index 100%
rename from markwon-view/src/debug/res/layout/debug_markwon_preview_compat.xml
rename to markwon-view-compat/src/debug/res/layout/debug_markwon_preview_compat.xml
diff --git a/markwon-view-compat/src/main/AndroidManifest.xml b/markwon-view-compat/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..6340e29d
--- /dev/null
+++ b/markwon-view-compat/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+
diff --git a/markwon-view/src/main/java/ru/noties/markwon/view/MarkwonViewCompat.java b/markwon-view-compat/src/main/java/ru/noties/markwon/view/MarkwonViewCompat.java
similarity index 100%
rename from markwon-view/src/main/java/ru/noties/markwon/view/MarkwonViewCompat.java
rename to markwon-view-compat/src/main/java/ru/noties/markwon/view/MarkwonViewCompat.java
diff --git a/markwon-view/README.md b/markwon-view/README.md
index 71f032db..a6e9e54f 100644
--- a/markwon-view/README.md
+++ b/markwon-view/README.md
@@ -2,40 +2,20 @@
[](http://search.maven.org/#search|ga|1|g%3A%22ru.noties%22%20AND%20a%3A%markwon-view%22)
-This is simple library containing 2 views that are able to display markdown:
-* MarkwonView - extends `android.view.TextView`
-* MarkwonViewCompat - extends `android.support.v7.widget.AppCompatTextView`
-
-Both of them implement common `IMarkwonView` interface:
-```java
-public interface IMarkwonView {
-
- interface ConfigurationProvider {
- @NonNull
- SpannableConfiguration provide(@NonNull Context context);
- }
-
- void setConfigurationProvider(@NonNull ConfigurationProvider provider);
-
- void setMarkdown(@Nullable String markdown);
- void setMarkdown(@Nullable SpannableConfiguration configuration, @Nullable String markdown);
-
- @Nullable
- String getMarkdown();
-}
-```
-
-Both views support layout-preview in Android Studio (with some exceptions, for example, bold span is not rendered due to some limitations of layout preview).
-These are XML attributes:
+This library allows for rendering markdown through a widget `MarkwonView` and supports the following XML attributes:
```
app:mv_markdown="string"
app:mv_configurationProvider="string"
```
+Prefer this library over `MarkdownViewCompat` if you do not want dependency to Android's support library.
+
+Android Studio's layout-preview supports rendering (with some exceptions, for example, bold span is not rendered due to some limitations of layout preview) markdown text.
+
`mv_markdown` accepts a string and represents raw markdown
`mv_configurationProvider` accepts a string and represents a full class name of a class of type `ConfigurationProvider`,
for example: `com.example.my.package.MyConfigurationProvider` (this class must have an empty constructor
in order to be instantiated via reflection).
-Please note that those views parse markdown in main thread, so their usage must be for relatively small markdown portions only
+Please note that those views parse markdown in main thread, so their usage must be for relatively small markdown portions only
\ No newline at end of file
diff --git a/markwon-view/build.gradle b/markwon-view/build.gradle
index 5e4e72ab..3c80cd45 100644
--- a/markwon-view/build.gradle
+++ b/markwon-view/build.gradle
@@ -14,12 +14,7 @@ android {
}
dependencies {
-
- api project(':markwon')
-
- deps.with {
- compileOnly it['support-app-compat']
- }
+ api project(':markwon-view-common')
}
registerArtifact(this)
diff --git a/settings.gradle b/settings.gradle
index 11192dbe..4edbb27d 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,5 @@
rootProject.name = 'MarkwonProject'
-include ':app', ':markwon', ':markwon-image-loader', ':markwon-view', ':sample-custom-extension', ':sample-latex-math',
+include ':app', ':markwon', ':markwon-image-loader',
+ ':markwon-view', ':markwon-view-compat', ':markwon-view-common',
+ ':sample-custom-extension', ':sample-latex-math',
':markwon-syntax-highlight', ':markwon-html-parser-api', ':markwon-html-parser-impl'