Groovy DSL:处理标签
我正在Groovy中为一些现有的文件格式实现一个DSL。 在这种格式中,我们有一个类似Groovy DSL:处理标签,groovy,dsl,Groovy,Dsl,我正在Groovy中为一些现有的文件格式实现一个DSL。 在这种格式中,我们有一个类似 group basic_test { test vplan_testing { dir: global_storage; }; }; 这里我对这个dir:global_storage-groovy将“dir:”视为一个标签,所以我无法处理它 你知道我如何接收这个构造的回调(getProperty,invokeMissingMethod)吗 谢谢大家! 我不相信您可以通过这种
group basic_test {
test vplan_testing {
dir: global_storage;
};
};
这里我对这个dir:global_storage
-groovy将“dir:”视为一个标签,所以我无法处理它
你知道我如何接收这个构造的回调(getProperty,invokeMissingMethod)吗
谢谢大家! 我不相信您可以通过这种方式实现这一点,您需要稍微更改您的dsl才能捕获这些信息。以下是您可以实现这一目标的方法:
class Foo {
static plan = {
vplan_testing {
dir 'global_storage'
}
}
}
def closure = Foo.plan
closure.delegate = this
closure()
def methodMissing(String name, Object args) {
println "$name $args"
if(args[0] instanceof Closure)
args[0].call()
}
输出将是
目录[全球存储]
或者您可以这样定义dsl:
class Foo {
static plan = {
vplan_testing {
test dir:'global_storage'
}
}
}
将“测试”替换为对您的域有意义的内容。在这种情况下,输出将是
测试[[dir:全局存储]]
希望这有帮助
-肯谢谢你。我希望我可以使用Groovy DSL作为现有格式的解析器,而不做任何更改