Отже, я знаю, що можу зробити щось подібне:
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 , і не зміг нічого знайти, тому я підозрюю, що відповідь просто "ні, ви не можете цього зробити". Але якщо хтось має якісь ідеї, це було б чудово.
РЕДАГУВАТИ: Оскільки відповідей не було, я припускаю, що ніхто не помітив нічого, чого я не мав у специфікації YAML, і що цього не можна зробити на рівні YAML. Тож я відкриваю питання до ідеї для подальшої обробки YAML, щоб допомогти в цьому, якщо хтось знайде це питання в майбутньому.