You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.1 KiB
Kotlin
33 lines
1.1 KiB
Kotlin
package me.eater.hefbrug.dsl.context.extension_util
|
|
|
|
import me.eater.hefbrug.definition.DefinitionFactory
|
|
import me.eater.hefbrug.definition.DefinitionKey
|
|
import me.eater.hefbrug.definition.DefinitionSkeleton
|
|
import me.eater.hefbrug.dsl.context.DefinitionContextSkeleton
|
|
import me.eater.hefbrug.dsl.context.TargetedContext
|
|
import me.eater.hefbrug.dsl.scope.TargetedScope
|
|
import me.eater.hefbrug.state.AbstractState
|
|
|
|
|
|
object DefinitionHelper {
|
|
@Suppress("UNCHECKED_CAST")
|
|
suspend fun <S : AbstractState, C : DefinitionContextSkeleton<S>, D : DefinitionSkeleton<S, C>, F : DefinitionFactory<S, C, D>> runBlock(
|
|
context: TargetedContext,
|
|
factory: F,
|
|
id: Array<out String>,
|
|
block: suspend C.() -> Unit
|
|
) {
|
|
for (idx in id) {
|
|
block(
|
|
RuntimeRegister[context.runtimeUUID]
|
|
.getScope<TargetedScope>(context)
|
|
.getDefinition(idx, factory)
|
|
.getContext()
|
|
)
|
|
}
|
|
}
|
|
|
|
class KeyHelper(private val factory: DefinitionFactory<*, *, *>) {
|
|
operator fun get(id: String) = factory.key(id)
|
|
}
|
|
} |