Чтение и запись файлов 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 :: магазин, но это полностью уничтожает псевдонимы и якоря.

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

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

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

defaults: &defaults
  foo: bar
  zip: button

node:
  <<: *defaults
  foo: yet another

?

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

Ответы на вопрос(3)

Ваш ответ на вопрос