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」ノードに対してのみ呼び出されます。テキストブロックをクロージャーでラップせずにビルダーに直接渡すなど、これの多くのバリエーションを試しました。それらはすべて同じ結果をもたらします。
任意のテキストを取得してビルダーに渡し、正しく解析してビルドできるようにする方法はありますか?