Одна из основных фич и одновременно основная проблема YAML'а сводится к тому, что текст можно писать без кавычек, но только до тех пор пока чисто случайно не оказывается, что его можно интерпретировать как что-то другое. Например, без пробелов пишут двубуквенные коды всех стран, кроме Норвегии, потому что NO интерпретируется как булево значение false
.
Чтобы радикально улучшить YAML, нужно всё же чётко маркировать текст, но наряду с тяжеловесными ковычками предоставить метод ненавязчивой маркировки. Для этого я предлагаю использовать обратную кавычку. Обратная кавычка перед словом (без отбития пробелом справа) — слово следует читать verbatim. Обратная кавычка с пробелом справа, и прижатая к предыдущему символу слева — verbatim до конца строки. Обратная ковычка с пробелом справа, слева которой пробел или начало строки — многострочный блок текста, заканчивающийся при падении индентации до уровня кавычки.
name:` Mary Smith
age: 28
summary:
` Mary Smith was born
in Norway in late
twentieth century
children:
-` Anna Smith
-` Max Null
spoken-languages: [`en, `no, `ru-md]
Аналогичная система, кстати, неплохо смотрится и в языках программирования
print` Hello world!
Примечание: символ новой строки в конце текстовых блоков не считается частью блока, а два последовательных многострочных текстовых блока конкатенируются:
` Пример 1:
Иногда нам хочется вмещать в файл ограниченной ширины строки,
` превосходящую эту ширину. Эту задачу мы можем элегантно решить,
` ставя перед перенесённой строкой обратный апостров, который
` как-бы съедает предыдущий перенос строки.
Пример 2:
...
Несложно заметить, что это элегантно лишает всякого смысла YAML-овские многострочные блоков |
и >
.