我通过扩展 BuilderSupport 在 Groovy 中构建了一个自定义构建器。当像几乎所有构建器代码示例一样配置时,它运行良好:
def builder = new MyBuilder()
builder.foo {
"Some Entry" (property1:value1, property2: value2)
}
当然,这非常有效。问题是我不希望我正在构建的信息出现在代码中。我想将此信息保存在某个文件中,该文件由构建器读取并内置到对象中。我无法弄清楚如何做到这一点。
我什至无法通过在代码中移动简单的条目来完成这项工作。这有效:
def textClosure = { "Some Entry" (property1:value1, property2: value2) }
builder.foo(textClosure)
因为 textClosure 是一个闭包。
如果我这样做:
def text = '"Some Entry" (property1:value1, property2: value2)'
def textClosure = { text }
builder.foo(textClosure)
构建器只被调用“foo”节点。我已经尝试了许多变体,包括将文本块直接传递到构建器而不将其包装在闭包中。它们都产生相同的结果。
有什么方法可以获取一段任意文本并将其传递给我的构建器,以便它能够正确解析和构建它?