Simple coroutine friendly event oriented programming for Kotlin.
| gradle/wrapper | ||
| src | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
Effekt
Event and effect system for Kotlin.
Installation
Effekt can be installed from the remlit.site releases repository.
repositories {
mavenCentral()
maven {
url = uri("https://repo.remlit.site/releases")
}
}
dependencies {
implementation("site.remlit:effekt:0.1.4")
}
Using
To create an event, you can implement the Event interface. You can choose to add parameters that can be use in effects.
class MessageEvent(val message: String) : Event
You can create an effect of this event which prints the message.
effect<MessageEvent> { event ->
println("Received message ${event.message}")
}
You can also set priority of events. The higher the priority, the sooner the effect executes when an event is called.
// Runs first
effect<MessageEvent>(EffectPriority.High) { event ->
println("Received message ${event.message}")
}
// Runs last
effect<MessageEvent>(EffectPriority.Low) { event ->
println("Received message ${event.message} again")
}
When an event is interruptable, you can prevent the remaining effects from running from within an effect.
class MessageEvent(val message: String) : InterruptableEvent
effect<MessageEvent>(EffectPriority.High) { event ->
println("Received message ${event.message}")
event.interrupt()
}
// Never runs
effect<MessageEvent>(EffectPriority.Low) { event ->
println("Received message ${event.message} again")
}