だから、私はこのようなことをすることができることを知っています:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
そして、持っているsitelist
とanotherlist
両方が含まれwww.foo.com
ていwww.bar.com
ます。しかし、私が本当に望んでいるのは、とを繰り返す必要なしに、anotherlist
も含むことです。www.baz.com
www.foo.com
www.baz.com
これを行うと、YAMLパーサーで構文エラーが発生します。
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
アンカーとエイリアスを使用するだけでは、次のような別のレベルの下部構造を追加せずに、私が望むことを実行することはできないようです。
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist:
- *sites
- www.baz.com
つまり、このYAMLファイルの利用者はそれを認識している必要があります。
このようなことを行う純粋なYAMLの方法はありますか?または、変数の置換や特定の種類の下部構造の自動リフトの実装など、YAML後の処理を使用する必要がありますか?私はすでにその種の後処理を行って、他のいくつかのユースケースを処理しているので、私はそれを完全に嫌うわけではありません。ただし、私のYAMLファイルは、マシンで生成されるのではなく、人間によって書き込まれるため、標準のYAML構文に加えて、ユーザーが記憶する必要のあるルールの数を最小限に抑えたいと思います。
また、マップでも同様のことができるようにしたいと思います。
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
YAML仕様を検索しましたが、何も見つかりませんでした。そのため、答えは「いいえ、これはできません」と思われます。しかし、誰かが素晴らしいアイデアを持っているなら。
編集:答えがなかったので、私はYAML仕様にないものを誰も発見しておらず、これはYAMLレイヤーでは実行できないと推測しています。ですから、将来誰かがこの質問を見つけた場合に備えて、これを支援するためにYAMLを後処理するためのアイデアに質問を開いています。