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
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)
|
|
}
|
|
} |