Sha256: c001128542c28e4da9a8b42a50f1f8bbb21e6311b3a637cf2c58c67b8f8022e1

Contents?: true

Size: 852 Bytes

Versions: 6

Compression:

Stored size: 852 Bytes

Contents

if !Hash.instance_methods.include?(:deep_merge)
  class Hash
    # copied from ActiveSupport::CoreExtensions::Hash::DeepMerge 2.3.8
    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
  end
end

if !Hash.instance_methods.include?(:slice)
  class Hash
    # copied from http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Hash/Slice.html
    def slice(*keys)
      allowed = Set.new(respond_to?(:convert_key) ? keys.map { |key| convert_key(key) } : keys)
      hash = {}
      allowed.each { |k| hash[k] = self[k] if has_key?(k) }
      hash
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
yacht-0.2.6 lib/monkeypatches/hash.rb
yacht-0.2.5 lib/monkeypatches/hash.rb
yacht-0.2.0 lib/monkeypatches/hash.rb
yacht-0.1.2 lib/monkeypatches/hash.rb
yacht-0.1.1 lib/monkeypatches/hash.rb
yacht-0.1.0 lib/monkeypatches/hash.rb