Separation of MarkwonView from MarkwonViewCompat

Rationale:
Consumers may now include MarkwonView without transitively including the support library
This commit is contained in:
Cyrus Bakhtiari-Haftlang 2018-10-01 15:10:43 +02:00
parent e0563dca43
commit f625b67787
18 changed files with 104 additions and 33 deletions

View File

@ -0,0 +1,22 @@
# Markwon View Common
[![maven|markwon-view](https://img.shields.io/maven-central/v/ru.noties/markwon-view.svg?label=maven%7Cmarkwon-view)](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();
}
```

View File

@ -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)

View File

@ -0,0 +1,3 @@
POM_NAME=Markwon-View
POM_ARTIFACT_ID=markwon-view-common
POM_PACKAGING=aar

View File

@ -0,0 +1 @@
<manifest package="ru.noties.markwon.view" />

View File

@ -0,0 +1,21 @@
# Markwon View Compat
[![maven|markwon-view](https://img.shields.io/maven-central/v/ru.noties/markwon-view.svg?label=maven%7Cmarkwon-view)](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

View File

@ -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)

View File

@ -0,0 +1,3 @@
POM_NAME=Markwon-View
POM_ARTIFACT_ID=markwon-view-compat
POM_PACKAGING=aar

View File

@ -0,0 +1 @@
<manifest package="ru.noties.markwon.view" />

View File

@ -2,40 +2,20 @@
[![maven|markwon-view](https://img.shields.io/maven-central/v/ru.noties/markwon-view.svg?label=maven%7Cmarkwon-view)](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

View File

@ -14,12 +14,7 @@ android {
}
dependencies {
api project(':markwon')
deps.with {
compileOnly it['support-app-compat']
}
api project(':markwon-view-common')
}
registerArtifact(this)

View File

@ -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'