2015-05-02 3 views
3

Я люблю ЯМЛ.У вас есть упрощенные форматы 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.

Кто-нибудь знает об этом?

ответ

3

Есть много таких подмножеств. Почти каждая библиотека YAML определяет один неявно по формату, который возникает в результате округления (загрузка YAML во внутренние данные и сериализация данных обратно в YAML).

Вы часто можете влиять на эти подмножества, но они, как правило, имеют полезные значения по умолчанию с блочной структурой для больших коллекций и стиля потока для более мелких (каждый в соответствии с тем, что разработчик библиотеки считал читаемым).

IMO способ обращения с редакторами-изгоями заключается в том, чтобы обойти код с помощью утилиты yaml (из которой я являюсь автором), которая поставляется с парсером ruamel.yaml, а затем использовать его. Если вам не нравится подмножество, которое оно навязывает вам, должно быть относительно легко внести изменения в настройки сериализатора, поэкспериментируя. Такая «нормализация» - это ИМО, прежде чем хранить/обновлять любой файл YAML в системе контроля версий.

+0

О, круто, это так просто, я даже не подумал об этом! – Andy