package me.eater.hefbrug.dsl.context import me.eater.hefbrug.dsl.annotation.HefbrugDSL import me.eater.hefbrug.dsl.context.extension_util.Register import me.eater.hefbrug.selector.NodeSelector import me.eater.hefbrug.selector.SelectorInterface import java.util.* @HefbrugDSL open class RootContext : ContextInterface, RootContextSkeleton, SelectionDefinitionContext Unit> { override val contextUUID: UUID = UUID.randomUUID() override fun select(selector: SelectorInterface, block: suspend TargetedContext.() -> Unit) { Register[contextUUID].selectorScope.addSelector(selector, block) } override fun module(id: String, block: suspend ModuleContext.() -> Unit) { Register[contextUUID].selectorScope.getModule(id).addBlock(block) } override fun assign(block: AssignContext.() -> Unit) { Register[contextUUID].selectorScope.addAssigner(block) } @Suppress("UNUSED") fun node(selector: Regex, block: suspend TargetedContext.() -> Unit = {}) { Register[contextUUID].selectorScope.addSelector(NodeSelector(selector), block) } }