module Brat # Converts hashes to the objects. class ObjectifiedHash # Creates a new ObjectifiedHash object. def initialize(hash) @hash = hash @data = hash.inject({}) do |data, (key,value)| value = ObjectifiedHash.new(value) if value.is_a? Hash data[key.to_s] = value data end end def to_hash @hash end alias_method :to_h, :to_hash # Delegate to ObjectifiedHash. def method_missing(key) @data.key?(key.to_s) ? @data[key.to_s] : nil end end end