連動構造の大きなハッシュ(>10⁵キー)があります。それらはYAMLとしてディスクに保存されます。YAMLでアンカーと参照を使用して重複を避けたいのですが、#to_yaml
メソッドがアンカーノードに適切にラベルを付けるように、ハッシュで暗黙的にそれを行う方法があるかどうかを理解できませんでした。
必要なYAML:
---
parent1:
common-element-1: &CE1
complex-structure-goes: here
parent2:
uncomment-element-1:
blah: blah
<<: *CE1
Rubyコード:
hsh = {
'parent1' => {
'common-element-1' => {
'complex-structure-goes' => 'here',
},
'parent2' => {
'uncommon-element-1' => {
'blah' => 'blah',
},
'<<' => '*CE1',
},
}
参照は非常に簡単ですが、Rubyハッシュのアイテムに&CE1
アンカーを埋め込む方法は?'common-element-1'
Hash
ビルダーやエミッターなどをいじくり回すのではなく、ネイティブのRubyプリミティブ型(など)で可能な限り作業したいのですが、YAMLを手動で記述したくないのは間違いありません!
アンカーとエイリアスを破壊せずにYAMLファイルを読み書きするのを見てきましたか?とその相対的な、他の場所の中で、しかしまだ答えを見つけていません-少なくとも私が理解したことではありません。
ありがとう!