だから、私はこのようなことができることを知っています:
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を後処理してこれを支援するためのアイデアを提示します。