Итак, я знаю, что могу сделать что-то вроде этого:
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.
Я также хотел бы иметь возможность делать аналогичные вещи с картами:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
У меня был поиск через спецификация YAML, и я ничего не мог найти, поэтому я подозреваю, что ответ "нет" не может этого сделать ". Но если у кого-то есть какие-то идеи, это было бы здорово.
EDIT: Поскольку ответов не было, я предполагаю, что никто не заметил ничего, что у меня не было в спецификации YAML, и что это невозможно сделать на уровне YAML. Поэтому я открываю вопрос к идее пост-обработки YAML, чтобы помочь в этом, если кто-нибудь найдет этот вопрос в будущем.