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"]}