Ich weiß also, dass ich so etwas tun kann:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
Und haben sitelist
und anotherlist
beide enthalten www.foo.com
und www.bar.com
. Was ich aber wirklich will, ist anotherlist
, auch zu enthalten www.baz.com
, ohne wiederholen zu müssen www.foo.com
und www.baz.com
.
Dadurch erhalte ich einen Syntaxfehler im YAML-Parser:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
Nur mit Ankern und Aliasnamen 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
Dies bedeutet, dass der Verbraucher dieser YAML-Datei sich dessen bewusst sein muss.
Gibt es eine reine YAML-Methode, um so etwas zu tun? Oder muss ich eine Post-YAML-Verarbeitung verwenden, z. B. das Implementieren einer Variablensubstitution oder das automatische Aufheben bestimmter Arten von Substrukturen? Ich mache bereits diese Art der Nachbearbeitung, um ein paar andere Anwendungsfälle zu behandeln, also bin ich nicht ganz abgeneigt. Aber meine YAML-Dateien werden von Menschen geschrieben und nicht maschinengeneriert. Daher möchte ich die Anzahl der Regeln minimieren, die meine Benutzer zusätzlich zur Standard-YAML-Syntax speichern müssen.
Ich möchte auch in der Lage sein, das Analoge mit Karten zu tun:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
Ich habe die YAML-Spezifikation durchsucht und konnte nichts finden. Daher vermute ich, dass die Antwort nur "Nein, das können Sie nicht" lautet. Aber wenn jemand irgendwelche Ideen hat, wäre das großartig.
EDIT: Da es keine Antworten gab, gehe ich davon aus, dass niemand etwas entdeckt hat, was ich nicht in der YAML-Spezifikation habe, und dass dies auf der YAML-Ebene nicht möglich ist. Daher öffne ich die Frage für die Idee, die YAML nachzubearbeiten, um dies zu unterstützen, falls jemand diese Frage in Zukunft findet.