Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/copper-leaf/thistle
Kotlin Multiplatform inline styling markup library
https://github.com/copper-leaf/thistle
android ansi-colors compose compose-desktop formatting kotlin kotlin-multiplatform markup
Last synced: 12 days ago
JSON representation
Kotlin Multiplatform inline styling markup library
- Host: GitHub
- URL: https://github.com/copper-leaf/thistle
- Owner: copper-leaf
- License: bsd-3-clause
- Created: 2021-05-06T16:14:07.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-12-07T00:11:37.000Z (almost 2 years ago)
- Last Synced: 2024-08-01T22:37:46.824Z (4 months ago)
- Topics: android, ansi-colors, compose, compose-desktop, formatting, kotlin, kotlin-multiplatform, markup
- Language: Kotlin
- Homepage: https://copper-leaf.github.io/thistle/
- Size: 24.6 MB
- Stars: 54
- Watchers: 3
- Forks: 2
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Thistle
> Kotlin multiplatform String markup library, inspired by [SRML](https://github.com/jasonwyatt/SRML). Thistle is a
> common parser which produces an AST that can be rendered to a variety of platform-specific UIs.![GitHub release (latest by date)](https://img.shields.io/github/v/release/copper-leaf/thistle)
![Maven Central](https://img.shields.io/maven-central/v/io.github.copper-leaf/thistle-core)
![Kotlin Version](https://img.shields.io/badge/Kotlin-1.6.10-orange)```kotlin
// Android
val thistle = ThistleParser(AndroidDefaults(context))
binding.textView.applyStyledText(
thistle,
"Text with {{b}}bold{{/b}} or {{foreground color=#ff0000}}red{{/foreground}} styles"
)// Compose (both Android and Desktop)
MaterialTheme {
ProvideThistle {
StyledText("Text with {{b}}bold{{/b}} or {{foreground color=#ff0000}}red{{/foreground}} styles")
}
}// Console (ANSI codes)
val thistle = ThistleParser(ConsoleDefaults())
printlnStyledText(
thistle,
"Text with {{b}}bold{{/b}} or {{red}}red{{/red}} styles"
)
```| Android | Compose UI | Console |
| --------- | ---------- | ------- |
| ![sample_app](https://github.com/copper-leaf/thistle/blob/main/docs/src/orchid/resources/assets/media/sample_android.gif?raw=true) | ![sample_console](https://copper-leaf.github.io/thistle/assets/media/sample_compose.png) | ![sample_console](https://copper-leaf.github.io/thistle/assets/media/sample_console.png) |
| [Source](https://github.com/copper-leaf/thistle/tree/main/examples/android) | [Source](https://github.com/copper-leaf/thistle/tree/main/examples/compose-desktop) | [Source](https://github.com/copper-leaf/thistle/blob/main/thistle-console/src/commonTest/kotlin/com/copperleaf/thistle/console/TestConsoleRenderer.kt) |# Supported Platforms/Features
| Platform | Markup Target |
| ---------- | ---------------------------------------------------------------------------------------------------------- |
| Android | [Spannable](https://developer.android.com/reference/android/text/Spannable) |
| Compose UI | [AnnotatedString](https://developer.android.com/reference/kotlin/androidx/compose/ui/text/AnnotatedString) |
| Console | [ANSI Codes](https://en.wikipedia.org/wiki/ANSI_escape_code) |
| iOS | NSAttributedString (TODO) |
| JS | HTML DOM (TODO) |# Installation
```kotlin
repositories {
mavenCentral()
}// for plain JVM or Android projects
dependencies {
implementation("io.github.copper-leaf:thistle-core:{{site.version}}")
implementation("io.github.copper-leaf:thistle-android:{{site.version}}")
implementation("io.github.copper-leaf:thistle-compose-ui:{{site.version}}")
implementation("io.github.copper-leaf:thistle-console:{{site.version}}")
}// for multiplatform projects
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("io.github.copper-leaf:thistle-core:{{site.version}}")
implementation("io.github.copper-leaf:thistle-android:{{site.version}}")
implementation("io.github.copper-leaf:thistle-compose-ui:{{site.version}}")
implementation("io.github.copper-leaf:thistle-console:{{site.version}}")
}
}
}
}
```# Documentation
See the [website](https://copper-leaf.github.io/thistle/) for detailed documentation and usage instructions.
# License
Thistle is licensed under the BSD 3-Clause License, see [LICENSE.md](https://github.com/copper-leaf/thistle/tree/main/LICENSE.md).
# References
- [SRML](https://github.com/jasonwyatt/SRML)