Hash
ドットで区切られたすべてのキー (ネストあり) のリストを取得する便利な方法は何ですか?
ハッシュがあるとします:
{ level1: { level21: { level31: 'val1',
level32: 'val2' },
level22: 'val3' }
}
ハッシュ内のすべてのキー パスを表す目的の出力 (文字列の配列):
level1.level21.level31
level1.level21.level32
level1.level22
私の現在の解決策:
class HashKeysDumper
def self.dump(hash)
hash.map do |k, v|
if v.is_a? Hash
keys = dump(v)
keys.map { |k1| [k, k1].join('.') }
else
k.to_s
end
end.flatten
end
end
gist (仕様書付き)としても利用できます。