Существует ли синтаксис YAML для совместного использования части списка или карты?
Итак, я знаю, что могу сделать что-то вроде этого:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
И имеютsitelist
а такжеanotherlist
оба содержатwww.foo.com
а такжеwww.bar.com
, Тем не менее, что я действительно хочу дляanotherlist
втакже содержатьwww.baz.com
без необходимости повторятьwww.foo.com
а такжеwww.baz.com
.
Это дает мне синтаксическую ошибку в парсере YAML:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
Просто используя якоря и псевдонимы, кажется невозможным сделать то, что я хочу, без добавления другого уровня субструктуры, такого как:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist:
- *sites
- www.baz.com
Что означает, что пользователь этого файла YAML должен знать об этом.
Есть ли чистый способ YAML сделать что-то подобное? Или мне придется использовать некоторую обработку после YAML, такую как внедрение подстановки переменных или автоподъем определенных типов подструктуры? Я уже делаю такую постобработку, чтобы обработать пару других вариантов использования, поэтому я не совсем против этого. Но мои файлы YAML будут написаны людьми, а не сгенерированы машиной, поэтому я хотел бы свести к минимуму количество правил, которые должны запомнить мои пользователи, в дополнение к стандартному синтаксису YAML.
Я также хотел бы иметь возможность сделать аналогичную вещь с картами:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
У меня был поиск черезYAML specи не смог ничего найти, поэтому я подозреваю, что ответ просто "нет, ты не можешь этого сделать". Но если у кого-то есть идеи, это было бы здорово.
РЕДАКТИРОВАТЬ: Поскольку ответов не было, я предполагаю, что никто не заметил ничего, чего у меня нет в спецификации YAML, и что это невозможно сделать на уровне YAML. Так что я открываю вопрос к идее для последующей обработки YAML, чтобы помочь с этим, на случай, если кто-нибудь найдет этот вопрос в будущем.