# File lib/hashr.rb, line 30 def initialize(klass, data = nil, defaults = nil, &block) ::Kernel.fail ::ArgumentError.new("Invalid input #{data.inspect}") unless data.nil? || data.is_a?(::Hash) data = (data || {}).deep_symbolize_keys defaults = (defaults || klass.defaults || {}).deep_symbolize_keys @class = klass @data = defaults.deep_merge(data).inject({}) do |result, (key, value)| result.merge(key => value.is_a?(::Hash) ? ::Hashr.new(value, {}) : value) end end