Ich weiß also, dass ich so etwas tun kann:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
Und haben sitelist
y anotherlist
beide enthalten www.foo.com
y www.bar.com
. Was ich jedoch wirklich möchte, ist, dass anotherlist
a auch enthalten www.baz.com
ohne wiederholen zu müssen www.foo.com
y www.baz.com
.
Dies führt zu einem Syntaxfehler im YAML-Parser:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
Nur mit Ankern und Aliasen scheint es nicht möglich zu sein, das zu tun, was ich will, ohne eine weitere Ebene der Unterstruktur hinzuzufügen, wie zum Beispiel:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist:
- *sites
- www.baz.com
Das bedeutet, dass der Konsument dieser YAML-Datei davon Kenntnis haben muss.
Gibt es eine reine YAML-Methode, um so etwas zu tun? Oder muss ich eine Post-YAML-Verarbeitung verwenden, wie z.B. die Implementierung von Variablensubstitution oder die automatische Aufhebung bestimmter Arten von Unterstrukturen? Ich mache diese Art von Nachbearbeitung bereits für einige andere Anwendungsfälle, daher bin ich dem nicht ganz abgeneigt. Da meine YAML-Dateien aber von Menschen geschrieben und nicht maschinell generiert werden sollen, möchte ich die Anzahl der Regeln, die sich meine Benutzer zusätzlich zur YAML-Standardsyntax merken müssen, möglichst gering halten.
Das Gleiche würde ich auch gerne mit Karten machen können:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
Ich habe eine Suche durch die YAML-Spezifikation und konnte nichts finden, so dass ich vermute, die Antwort lautet einfach "Nein, das geht nicht". Aber wenn jemand irgendwelche Ideen hat, wäre das großartig.
EDITAR: Da es keine Antworten gab, gehe ich davon aus, dass niemand etwas entdeckt hat, was ich in der YAML-Spezifikation nicht gefunden habe und dass dies nicht auf der YAML-Ebene möglich ist. Ich eröffne daher die Frage nach Ideen für eine Nachbearbeitung der YAML, um dies zu unterstützen, falls jemand diese Frage in Zukunft findet.