Skip to content

Commit

Permalink
feat: document the kotlin modules
Browse files Browse the repository at this point in the history
  • Loading branch information
Citymonstret committed Dec 23, 2023
1 parent 1b8f9fc commit 83dcab5
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,5 @@ kotlin
iterable
Guice
GuiceInjectionService
coroutine
coroutines
54 changes: 54 additions & 0 deletions docs/kotlin/annotations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# cloud-kotlin-coroutines-annotations

This module adds coroutine support to [cloud-annotations](../annotations/index.md), allowing you to make
the annotated command methods and suggestion providers suspending.

The module also adds the ability to use Kotlin default values in both suspending and non-suspending methods.

```kotlin title="Example of a suspending command method"
@CommandMethod("command [argument]")
suspend fun yourCommand(
argument: String = "default value"
): Unit = withContext(Dispatchers.IO) {
// ...
}
```

## Installation

Cloud is available through [Maven Central](https://search.maven.org/search?q=cloud.commandframework).

<!-- prettier-ignore -->
=== "Gradle (Kotlin)"

```kotlin
implementation("cloud.commandframework:cloud-kotlin-coroutines-annotations:2.0.0-SNAPSHOT")
```

=== "Gradle (Groovy)"

```groovy
implementation 'cloud.commandframework:cloud-kotlin-coroutines-annotations:2.0.0-SNAPSHOT'
```

You then need to install the `AnnotationParser` extension:

```kotlin
annotationParser.installCoroutineSupport()
```

You may override the default coroutine scope (`GlobalScope`) and context (`EmptyCoroutineContext`)
when invoking `installCoroutineSupport`.

## Suggestion Providers

The coroutine support extends the allowed signatures for `@Suggestions`-annotated methods, letting you return
sequences of `Suggestion` objects as well as strings.

```kotlin title="Example of a suspending suggestion provider"
@Suggestions("custom-suggestions")
suspend fun suggestionMethod(
context: CommandContext<CommandSender>,
input: String
): Sequence<Suggestion> = sequenceOf("a", "b", "c").map(Suggestion::simple)
```

0 comments on commit 83dcab5

Please sign in to comment.