Чтение и запись файлов YAML без уничтожения якорей и псевдонимов?

Мне нужно открыть файл YAML с используемыми внутри него псевдонимами:

defaults: &defaults
  foo: bar
  zip: button

node:
  <<: *defaults
  foo: other

Это, очевидно, расширяется до эквивалентного документа YAML:

defaults:
  foo: bar
  zip: button

node:
  foo: other
  zip: button

Что YAML::loadчитается как.

Мне нужно установить новые ключи в этом документе YAML, а затем записать его обратно на диск, максимально сохранив исходную структуру.

Я просмотрел YAML ::Store , но это полностью уничтожает псевдонимы и якоря.

Есть ли что-нибудь доступное, что могло бы что-то вроде:

thing = Thing.load("config.yml")
thing[:node][:foo] = "yet another"

Сохранение документа обратно как:

defaults: &defaults
  foo: bar
  zip: button

node:
  <<: *defaults
  foo: yet another

?

Я решил использовать YAML для этого из-за того, что он хорошо справляется с этим псевдонимом, но написание YAML, содержащего псевдонимы, кажется немного мрачным -выглядящим игровым полем в реальности.

17
задан d11wtq 26 July 2012 в 09:05
поделиться