groovyでフローを表現するためのDSLを書いています。私は、フローの特定のポイントで保存され、評価される関数を書く能力をユーザに提供したいと考えています。ような何か:今groovyスクリプトが埋め込まれたGroovy DSL
states {
"checkedState" {
onEnter {state->
//do some groovy things with state object
}
}
}
は、私は引用符で囲む閉鎖をして、それを格納することができ、かなり確信しています。しかし、これらのDSLを編集するときには、可能な限りシンタックスハイライトとコンテンツアシストを維持したいと考えています。私は、別のコンテキストでクロージャーを実行するときにもはや有効ではない周囲のフロー定義からクロージャーCOULD参照アーティファクトが発生することを認識しており、これで問題はありません。実際には、非クロージャー関数定義にクロージャー構文を使用したいと思います。
tl; dr; DSLをデータベースに保存して後でスクリプトホストで実行できるように、クロージャのコードを取得する必要があります。
偉大な回答ありがとう!あらかじめ構築されたASTレンダリングライブラリの不足でこの答えが勝つでしょうが、私は他の人が答えるのにもう少し時間を与えます。 –