Стали ли распространены какие-либо упрощенные форматы 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 в системе контроля версий.

Другие вопросы по тегам