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.

32 lines
1.1 KiB
Kotlin

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<suspend TargetedContext.() -> 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)
}
}