Leia e escreva arquivos YAML sem destruir âncoras e aliases?
Eu preciso abrir um arquivo YAML com aliases usados dentro dele:
defaults: &defaults
foo: bar
zip: button
node:
<<: *defaults
foo: other
Isso obviamente se expande para um documento YAML equivalente de:
defaults:
foo: bar
zip: button
node:
foo: other
zip: button
QualYAML::load
lê como.
Eu preciso definir novas chaves neste documento YAML e, em seguida, gravá-lo de volta no disco, preservando a estrutura original, tanto quanto possível.
Eu olhei paraYAML :: Loja, mas isso destrói completamente os apelidos e âncoras.
Existe alguma coisa disponível que poderia algo ao longo das linhas de:
thing = Thing.load("config.yml")
thing[:node][:foo] = "yet another"
Salvando o documento de volta como:
defaults: &defaults
foo: bar
zip: button
node:
<<: *defaults
foo: yet another
?
Eu optei por usar o YAML para isso, porque ele lida com esse aliasing bem, mas escrever YAML que contém aliases parece ser um campo de aparência sombrio na realidade.