За что я не люблю YAML
2016-10-11 16:07Спецификация JSON’а вмещается в пять страниц и её может читать пятиклассник. Однажды прочитанная, она укладывается в голову навсегда.
Спецификация YAML — это 84 страницы мелкого умного текста. Попробуйте запомнить, чем отличается unquoted, 'single-quoted', "double-quoted", | literal и > folded скаляры, и как в них работает удаление ведущих пробелов.
И ещё вот эта грабля с массивами и отображениями, эта дурацкая неоднородность в окрестности нуля:
# Массив из двух элементов
array2:
- foo
- bar
# Убираем один, получаем массив из одного элемента
array1:
- foo
#- bar
# Убираем один, получаем пустой массив?
array0:
#- foo
#- bar
# Отображение из двух ключей
map2:
foo: bar
baz: quux
# Убираем один, получаем отображение из одного ключа
map1:
foo: bar
#baz: quux
# Убираем один, получаем пустое отображение?
map0:
#foo: bar
#baz: quux
А вот фиг. Значения array0 и map0 — null.
Сейчас начнутся возражения, что если тебе нужен пустой массив или пустое отображение, то напиши [] или {} соответственно. Ну так продемонстрируйте, как это будет выглядеть в вышеприведённых примерах. Чтоб раскомментирование элемента немедленно приводило обратно к одноэлементной коллекции.
Опять-таки, если мы согласны писать скобки и запятые, почему мы не пишем JSON?
no subject
Date: 2016-10-11 10:07 (UTC)no subject
Date: 2016-10-11 10:15 (UTC)Волосы дыбом. Никому нельзя верить. Все строки закавычивать в обязательном порядке. Все массивы — в квадратных скобках. Все отображения — в фигурных. Лёгким движением руки YAML превращается, превращается YAML, обратно в элегантный JSON.
no subject
Date: 2016-10-11 12:33 (UTC)чего поделать, edn как формат тоже фиг продашь
no subject
Date: 2016-10-11 13:15 (UTC)Этот, что ли?
Я в принципе ничего особенно не имею против форматов данных, пока они остаются форматами данных. То есть, пока с ним взаимодействует программа и изредка её разработчики.
Плохо становится, когда формат данных начинают использовать в качестве языка конфигурации, программирования, запросов и/или шаблонов. Ansible, GYP, MongoDB и XSLT тому примеры.
no subject
Date: 2016-10-12 07:10 (UTC)no subject
Date: 2016-10-12 07:27 (UTC)no subject
Date: 2016-10-11 10:08 (UTC)Regexp:
y|Y|yes|Yes|YES|n|N|no|No|NO
|true|True|TRUE|false|False|FALSE
|on|On|ON|off|Off|OFF