Quindi, so che posso fare qualcosa del genere:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
E hanno sitelist
e anotherlist
contengono www.foo.com
e www.bar.com
. Tuttavia, quello che voglio veramente è anotherlist
che contenga anchewww.baz.com
, senza dover ripetere www.foo.com
e www.baz.com
.
In questo modo viene visualizzato un errore di sintassi nel parser YAML:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
Usando semplicemente ancoraggi e alias non sembra possibile fare quello che voglio senza aggiungere un altro livello di sottostruttura, come ad esempio:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist:
- *sites
- www.baz.com
Il che significa che il consumatore di questo file YAML deve esserne consapevole.
Esiste un modo puro YAML di fare qualcosa del genere? O dovrò utilizzare un'elaborazione post-YAML, come l'implementazione della sostituzione di variabili o il sollevamento automatico di alcuni tipi di sottostruttura? Sto già eseguendo quel tipo di post-elaborazione per gestire un paio di altri casi d'uso, quindi non sono del tutto contrario. Ma i miei file YAML saranno scritti da esseri umani, non generati dalla macchina, quindi vorrei ridurre al minimo il numero di regole che devono essere memorizzate dai miei utenti in aggiunta alla sintassi YAML standard.
Mi piacerebbe anche poter fare la cosa analoga con le mappe:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
Ho fatto una ricerca attraverso le specifiche YAML e non sono riuscito a trovare nulla, quindi sospetto che la risposta sia semplicemente "no, non puoi farlo". Ma se qualcuno avesse qualche idea sarebbe fantastico.
EDIT: Dal momento che non ci sono state risposte, presumo che nessuno abbia notato nulla che io non abbia nella specifica YAML e che questo non possa essere fatto al livello YAML. Quindi sto aprendo la domanda all'idea per la post-elaborazione dello YAML per aiutare con questo, nel caso in cui qualcuno trovi questa domanda in futuro.