Donc, je sais que je peux faire quelque chose comme ça:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
Et ont sitelist
et anotherlist
contiennent tous les deux www.foo.com
et www.bar.com
. Cependant, ce que je veux vraiment est pour anotherlist
à également contenir www.baz.com
, sans avoir à répéter www.foo.com
etwww.baz.com
.
Cela me donne une erreur de syntaxe dans l'analyseur YAML:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
En utilisant simplement des ancres et des alias, il ne semble pas possible de faire ce que je veux sans ajouter un autre niveau de sous-structure, tel que:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist:
- *sites
- www.baz.com
Ce qui signifie que le consommateur de ce fichier YAML doit en être conscient.
Existe-t-il une manière pure YAML de faire quelque chose comme ça? Ou vais-je devoir utiliser un traitement post-YAML, comme l'implémentation de la substitution de variables ou la levée automatique de certains types de sous-structures? Je fais déjà ce genre de post-traitement pour gérer quelques autres cas d'utilisation, donc je ne suis pas totalement opposé à cela. Mais mes fichiers YAML vont être écrits par des humains, pas générés par la machine, donc je voudrais minimiser le nombre de règles qui doivent être mémorisées par mes utilisateurs en plus de la syntaxe YAML standard.
J'aimerais aussi pouvoir faire la chose analogue avec les cartes:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
J'ai fait une recherche dans la spécification YAML et je n'ai rien trouvé, donc je soupçonne que la réponse est simplement "non, vous ne pouvez pas faire ça". Mais si quelqu'un a des idées, ce serait génial.
EDIT: Puisqu'il n'y a eu aucune réponse, je suppose que personne n'a repéré quoi que ce soit que je n'ai pas dans la spécification YAML et que cela ne peut pas être fait au niveau de la couche YAML. J'ouvre donc la question à l'idée de post-traitement du YAML pour aider avec cela, au cas où quelqu'un trouverait cette question à l'avenir.