Hash の key を symbol でも文字列でもアクセス可能にする

Hash の key はなるべく symbol でアクセスするのが cool だと思う。しかしながら、JSON.parse とかで生成された Hash は、key が文字列で生成されているもんで、使い勝手が悪い。


extlib は Mash という Hash もどきの class を使ってこれを実現している。
普通の Hash をこの Mash に変換するには、 Hash#to_mash を使用する。
以下、使用例。

{
    'abc' => {
        'def' => 1,
        'hij' => 2
    }
}.to_mash[:abc][:hij]     # *=> 2


上記の通り階層構造になっていても、下位の階層も変換してくれるみたい。


ちなみに、変換後は class は Mash になる。

また、逆変換で Mash#to_hash というメソッドも存在している。
この場合、変換結果の key は文字列だけになるみたい。