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 , D : DefinitionSkeleton, F : DefinitionFactory> runBlock( context: TargetedContext, factory: F, id: Array, block: suspend C.() -> Unit ) { for (idx in id) { block( RuntimeRegister[context.runtimeUUID] .getScope(context) .getDefinition(idx, factory) .getContext() ) } } class KeyHelper(private val factory: DefinitionFactory<*, *, *>) { operator fun get(id: String) = factory.key(id) } }