Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MMHash < Hash
- def method_missing name, *args, &block
- self[name]
- end
- def [] index
- if index.is_a? String
- self[index.to_sym]
- else
- super
- end
- end
- end
- ##### usage
- CONF = {
- :group1 => {
- :a => 'a',
- :b => 'b',
- :c => 'c'
- },
- :group2 => {
- :aa => 1,
- :bb => 'bb'
- }
- }
- class MMHash < Hash
- def method_missing name, *args, &block
- self[name]
- end
- def [] index
- if index.is_a? String
- self[index.to_sym]
- else
- super
- end
- end
- end
- conf = MMHash.new
- CONF.keys.each do |group|
- conf[group] = MMHash.new
- CONF[group].keys.each do |prop|
- conf[group][prop] = CONF[group][prop]
- end
- end
- p conf # => {:group1=>{:a=>"a", :b=>"b", :c=>"c"}, :group2=>{:aa=>1, :bb=>"bb"}}
- p conf[:group1] # => {:a=>"a", :b=>"b", :c=>"c"}
- p conf[:group1][:a] # => "a"
- p conf[:group1][:t] # => nil
- p conf.group10 # => nil
- p conf.group1 # => {:a=>"a", :b=>"b", :c=>"c"}
- p conf.group1.aa # => nil
- p conf['group10'] # => nil
- p conf['group1'] # => {:a=>"a", :b=>"b", :c=>"c"}
- p conf['group1'].aa # => nil
- p conf['group1'].a # => "a"
- p conf.group10.aaa # => Ideally this would be `nil`, but it seems impossible
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement