ดังนั้นฉันรู้ว่าฉันสามารถทำสิ่งนี้ได้:
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 เพื่อช่วยในเรื่องนี้เผื่อว่าใครจะพบคำถามนี้ในอนาคต