【发布时间】:2011-09-04 13:21:05
【问题描述】:
我试图使用 IntelliJ 中的 GroovyDSL 脚本功能定义一个动态方法。入门指南"Scripting IDE for DSL awareness" 为您提供了如何开始使用它的好主意。虽然我的 DSL 中的动态方法定义比示例更复杂,但我不太确定如何构建它。您可以想象它像 Grails 中的 dynamic finder methods 一样工作,只是您可以将任意数量的条件与布尔型 And 关键字以任意顺序组合。所有关键字都没有在我调用该方法的类中定义,但可以在 GDSL 文件中定义。该方法始终以submitTransactionWith 开头。这是一个例子:
clientDSL.submitTransactionWithCriteria1AndCriteria2AndCriteria3(arg1, arg2, arg3)
我从这个开始,但它只适用于一个标准,并没有考虑到您可以按任何顺序组合多个标准。
def ctx = context(ctype: "my.client.ClientDSL")
contributor(ctx) {
['Criteria1', 'Criteria2', 'Criteria3'].each {
method name: "submitTransactionWith${it}",
type: 'java.util.Map',
params: [args: 'java.util.Collection']
}
}
我想知道这种动态方法是否有特殊支持。我还对如何在 IntelliJ 内部建模 Grails 的 DSL 感兴趣。
【问题讨论】:
标签: grails ide groovy intellij-idea dsl