Vì vậy, tôi biết tôi có thể làm điều gì đó như sau:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
Và có sitelist
và anotherlist
cả hai đều chứa www.foo.com
và www.bar.com
. Tuy nhiên, những gì tôi thực sự muốn là cho anotherlist
đến cũng chứa www.baz.com
, mà không cần phải lặp lại www.foo.com
và www.baz.com
.
Làm điều này khiến tôi gặp lỗi cú pháp trong trình phân tích cú pháp YAML:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
Chỉ sử dụng neo và bí danh, dường như không thể làm những gì tôi muốn nếu không thêm một cấp cấu trúc con khác, chẳng hạn như:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist:
- *sites
- www.baz.com
Có nghĩa là người sử dụng tệp YAML này phải biết về nó.
Có cách nào thuần túy YAML để làm điều gì đó như thế này không? Hay tôi sẽ phải sử dụng một số xử lý sau YAML, chẳng hạn như thực hiện thay thế biến hoặc tự động nâng một số loại cấu trúc con nhất định? Tôi đã thực hiện loại xử lý hậu kỳ đó để xử lý một vài trường hợp sử dụng khác, vì vậy tôi không hoàn toàn ác cảm với nó. Nhưng các tệp YAML của tôi sẽ được viết bởi con người, không phải do máy tạo ra, vì vậy tôi muốn giảm thiểu số lượng các quy tắc mà người dùng của tôi cần phải ghi nhớ dựa trên cú pháp YAML chuẩn.
Tôi cũng muốn có thể làm điều tương tự với bản đồ:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
Tôi đã tìm kiếm thông qua thông số kỹ thuật YAML và không thể tìm thấy bất cứ điều gì, vì vậy tôi nghi ngờ câu trả lời chỉ là "không, bạn không thể làm điều này". Nhưng nếu bất kỳ ai có bất kỳ ý tưởng sẽ là tuyệt vời.
CHỈNH SỬA: Vì không có câu trả lời nào, tôi cho rằng không ai phát hiện ra bất cứ thứ gì tôi chưa có trong thông số YAML và điều này không thể thực hiện được ở lớp YAML. Vì vậy, tôi đang mở câu hỏi để lên ý tưởng cho việc xử lý sau YAML để giúp giải quyết vấn đề này, trong trường hợp có ai đó tìm thấy câu hỏi này trong tương lai.