Стали ли распространены какие-либо упрощенные форматы YAML?
Я люблю YAML.
Подождите, позвольте мне вернуться. Я люблю YAML, который выглядит так, даже больше, чем JSON:
Projects:
C/C++ Libraries:
- libyaml # "C" Fast YAML 1.1
- Syck # (dated) "C" YAML 1.0
- yaml-cpp # C++ YAML 1.2 implementation
Ruby:
- psych # libyaml wrapper (in Ruby core for 1.9.2)
- RbYaml # YAML 1.1 (PyYaml Port)
- yaml4r # YAML 1.0, standard library syck binding
...
Мне тоже нравятся якоря и ссылки на YAML, и иногда мне бы хотелось, чтобы они были у JSON.
Но я надеюсь, что большинство из нас может согласиться с тем, что следующее не настолько удобочитаемо для человека (я знаю, что этот пример дидактичен, но суть в том, что, поскольку это действительный YAML, люди, с которыми вы сотрудничаете, могут загрязнить ваши данные такими функциями):
!!map {
? !!str "sequence"
: !!seq [ !!str "one", !!str "two" ],
? !!str "mapping"
: !!map {
? !!str "sky" : !!str "blue",
? !!str "sea" : !!str "green",
},
}
Поэтому я разочарован, что не могу найти каких-либо распространенных переворотов для стандартизации упрощенного подмножества YAML, по крайней мере, с помощью беглого поиска в Google.
Кто-нибудь знает об этом?
1 ответ
Есть много таких подмножеств. Почти каждая библиотека YAML неявно определяет одну по формату, который получается в результате циклического отключения (загрузка YAML во внутренние данные и сериализация данных обратно в YAML).
Вы часто можете влиять на эти подмножества, но они имеют тенденцию иметь полезные значения по умолчанию со структурой блоков для больших коллекций и стилем потока для меньших (каждый в соответствии с тем, что разработчик библиотеки считал читаемым).
ИМО способ справиться с мошенническими редакторами состоит в том, чтобы выполнить обход кода через yaml
Утилита (автором которой я являюсь), которая поставляется с парсером ruamel.yaml, а затем использует ее. Если вам не нравится подмножество, которое оно навязывает вам, вам будет относительно легко внести изменения в его настройки сериализатора, экспериментируя. Такая "нормализация" обязательна для IMO перед сохранением / обновлением любого файла YAML в системе контроля версий.