Sha256: 3ef5d8d1117ab6dd216d593c4504369697557dbfdd4d4153d3cdad87e21e94eb

Contents?: true

Size: 771 Bytes

Versions: 17

Compression:

Stored size: 771 Bytes

Contents

module FlixCloud
  module Extensions
    # Both methods ripped directly out of rails
    module Hash
      def deep_merge(other_hash)
        self.merge(other_hash) do |key, oldval, newval|
          oldval = oldval.to_hash if oldval.respond_to?(:to_hash)
          newval = newval.to_hash if newval.respond_to?(:to_hash)
          oldval.class.to_s == 'Hash' && newval.class.to_s == 'Hash' ? oldval.deep_merge(newval) : newval
        end
      end

      # Returns a new hash with +self+ and +other_hash+ merged recursively.
      # Modifies the receiver in place.
      def deep_merge!(other_hash)
        replace(deep_merge(other_hash))
      end
    end
  end
end

Hash.send(:include, FlixCloud::Extensions::Hash) unless Hash.instance_methods.include?('deep_merge')

Version data entries

17 entries across 17 versions & 3 rubygems

Version Path
flixcloud-flix_cloud-gem-0.5.3 lib/flix_cloud/extensions/hash.rb
flixcloud-flix_cloud-gem-0.5.4 lib/flix_cloud/extensions/hash.rb
flixcloud-flix_cloud-gem-0.5.5 lib/flix_cloud/extensions/hash.rb
spob-flix_cloud-gem-0.5.3 lib/flix_cloud/extensions/hash.rb
spob-flix_cloud-gem-0.5.4 lib/flix_cloud/extensions/hash.rb
zencoder-flix_cloud-gem-0.0.0 lib/flix_cloud/extensions/hash.rb
zencoder-flix_cloud-gem-0.1.1 lib/flix_cloud/extensions/hash.rb
zencoder-flix_cloud-gem-0.2.0 lib/flix_cloud/extensions/hash.rb
zencoder-flix_cloud-gem-0.3.0 lib/flix_cloud/extensions/hash.rb
zencoder-flix_cloud-gem-0.4.0 lib/flix_cloud/extensions/hash.rb
zencoder-flix_cloud-gem-0.5.0 lib/flix_cloud/extensions/hash.rb
zencoder-flix_cloud-gem-0.5.1 lib/flix_cloud/extensions/hash.rb
zencoder-flix_cloud-gem-0.5.2 lib/flix_cloud/extensions/hash.rb
zencoder-flix_cloud-gem-0.5.3 lib/flix_cloud/extensions/hash.rb
spob-flix_cloud-gem-0.6.2 lib/flix_cloud/extensions/hash.rb
spob-flix_cloud-gem-0.6.1 lib/flix_cloud/extensions/hash.rb
spob-flix_cloud-gem-0.6 lib/flix_cloud/extensions/hash.rb