タイトルが適切か怪しいですが

class Hoge
  def fuga
    {:piyo => 1}
  end
end

このようなクラスがあった場合、以下のような使い方になると思いますが、

hoge =Hoge.new
hoge.fuga[:piyo] # => 1

hoge.fuga.piyoでも参照出来るようにしたい場合、どのようにするのが適切でしょうか。
数が少なく、キーも固定であればメソッドやインスタンス変数にする事はできると思いますが、
ハッシュの中身(キーも含めて)が動的に変わる場合でも対応できるように実装は可能でしょうか。

よろしくお願いします。