86d800b1c8
Continue modularisation by moving activities in the "About" feature to a new `feature.about` module. Implement `feature.about: - Move `AboutActivity`, `LicenseActivity`, and `PrivacyPolicyActivity` here. - Update `markdown2resource` plugin to work with libraries Implement `core.data`: - Types and repositories used through the app - Move `InstanceInfo` and `InstanceInfoRepository` here so they are available to `feature.about`. Implement `core.ui`: - App-specific views, spans, and other UI content - Move `ClickableSpanTextView` and `NoUnderlineURLSpan` here so they are available to `feature.about`. |
||
---|---|---|
.. | ||
src/main/kotlin/app/pachli/plugins/markdown2resource | ||
README.md | ||
build.gradle.kts | ||
gradle.properties | ||
settings.gradle.kts |
README.md
markdown2resource-plugin
Synopsis
Gradle plugin to convert one or more Markdown files to Java files with static constants where the Markdown has been converted to HTML. Similar (but not quite identical) to Android resources.
Example
In build.gradle
:
// Install the plugin
plugins {
id "app.pachli.plugins.markdown2resource"
}
// ...
// Configure the files to be processed
markdown2resource {
files = [ layout.projectDirectory.file('../PRIVACY.md') ]
}
In code:
// Assume binding.privacyPolicy references a `WebView`
// The generated string constant is in the `markdownR.html` package, named
// `PRIVACY_md`. To load the content in to a WebView it must be converted to
// base64
val html = Base64.encodeToString(markdownR.html.PRIVACY_md.toByteArray(), Base64.NO_PADDING)
binding.privacyPolicy.loadData(html, "text/html", "base64")
Configuration
The markdown2resource
block supports the following options.
files
- a list of RegularFile
in Markdown.
packageName
- the package name to use for the generated resources. Default is the android.namespace
of the build variant.
resourceClassName
- the outer class name to use for the generated resources. Default is markdownR
.
stringClassName
- the inner class name to use for the generated resources. Default is html
.
Tasks
The plugin creates N tasks, one for each configured build variant, named markdown2resource${variant.name.capitalized()}
For example:
- You have defined
debug
andrelease
build types, two tasks will be created,markdown2resourceDebug
andmarkdown2resourceRelease
. - You have defined
debug
andrelease
build types anddemo
andfull
product flavours, four tasks will be created,markdown2resourceDemoDebug
,markdown2resourceDemoRelease
,markdown2resourceFullDebug
,markdown2resourceFullRelease
.