29 lines
703 B
Kotlin
29 lines
703 B
Kotlin
package dev.inmo.postssystem.features.common.common
|
|
|
|
import org.koin.core.module.Module
|
|
|
|
interface ModuleLoader {
|
|
fun Module.load()
|
|
|
|
class ByCallback(private val loadingBlock: Module.() -> Unit) : ModuleLoader {
|
|
override fun Module.load() {
|
|
loadingBlock()
|
|
}
|
|
}
|
|
}
|
|
|
|
operator fun ModuleLoader.plus(other: ModuleLoader) = ModuleLoader.ByCallback {
|
|
with(this@plus) {
|
|
load()
|
|
}
|
|
with (other) {
|
|
load()
|
|
}
|
|
}
|
|
|
|
fun DefaultModuleLoader(loadingBlock: Module.() -> Unit): ModuleLoader.ByCallback {
|
|
val newModuleLoader = ModuleLoader.ByCallback(loadingBlock)
|
|
AdditionalModules.Default.addModule(newModuleLoader)
|
|
return newModuleLoader
|
|
}
|