Yani, bunun gibi bir şey yapabileceğimi biliyorum:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
Ve sahip sitelist
ve anotherlist
her ikisi de www.foo.com
ve içerir www.bar.com
. Ancak, ne gerçekten istemek içindir anotherlist
için de içerirler www.baz.com
tekrarlamak zorunda kalmadan, www.foo.com
ve www.baz.com
.
Bunu yapmak bana YAML ayrıştırıcısında bir sözdizimi hatası veriyor:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
Sadece çapa ve takma ad kullanarak, istediğim şeyi başka bir alt yapı düzeyi eklemeden yapmak mümkün görünmüyor, örneğin:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist:
- *sites
- www.baz.com
Bu, bu YAML dosyasının tüketicisinin bundan haberdar olması gerektiği anlamına gelir.
Böyle bir şey yapmanın saf bir YAML yolu var mı? Ya da değişken ikamesi uygulamak veya belirli alt yapı türlerinin otomatik kaldırılması gibi bazı YAML sonrası işlemleri kullanmak zorunda mıyım? Zaten birkaç başka kullanım durumunu ele almak için bu tür bir son işlem yapıyorum, bu yüzden bundan tamamen hoşlanmıyorum. Ancak YAML dosyalarım makine tarafından değil, insanlar tarafından yazılacak, bu yüzden kullanıcılarım tarafından ezberlenmesi gereken kuralların sayısını standart YAML sözdizimine göre en aza indirmek istiyorum.
Ayrıca haritalarla benzer bir şey yapabilmek isterim:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
YAML spesifikasyonunda bir arama yaptım ve hiçbir şey bulamadım, bu yüzden cevabın sadece "hayır bunu yapamazsınız" olduğundan şüpheleniyorum. Ama herhangi birinin harika olacak bir fikri varsa.
DÜZENLEME: Cevap olmadığından, YAML spesifikasyonunda hiç kimsenin sahip olmadığım bir şeyi fark etmediğini ve bunun YAML katmanında yapılamayacağını varsayıyorum. Bu yüzden soruyu, gelecekte bu soruyu herhangi birinin bulması durumunda, YAML'nin buna yardımcı olması için sonradan işleme fikrine açıyorum.