Ruby のブロックでパラメータ設定

Ruby のブロックを使って、
YAML 設定ファイルを以下のように書けたらと面白いかなと思ったけれども、
これだと配列が表現できないや。

Config.parse do
  param0 'val0'
  param1 'val1-0', 'val2-2'
  param3  :a => 55
  param4 'hoge' do
    param41 'foo', 'bar'
  end
end
class Config
  attr_accessor :config

  def initialize
    @config = {}
  end

  def self.parse(&block)
    config = Config.new
    config.instance_eval(&block)  unless block.nil?
    config.config
  end

  def method_missing(name, *argv, &block)
    unless block.nil?
      @config[name] = Config.parse &block
    else
      @config[name] = argv
    end
  end
end

require 'pp'

foo = Config.parse do
  param0 'val0'
  param1 'val1-0', 'val2-2'
  param3  :a => 55
  param4 'hoge' do
    param41 'foo', 'bar'
  end
end

pp foo

# {:param3=>[{:a=>55}],
#  :param4=>{:param41=>["foo", "bar"]},
#  :param0=>["val0"],
#  :param1=>["val1-0", "val2-2"]}