Sha256: 32864db341e584f1a335e060246048410f0d7dc5c0cb6128677d2a66c709316b

Contents?: true

Size: 1.85 KB

Versions: 11

Compression:

Stored size: 1.85 KB

Contents

module DataMapper; module Ext
  module Hash
    # Creates a hash with *only* the specified key/value pairs from +hash+.
    #
    # @param [Hash] hash The hash from which to pick the key/value pairs.
    # @param [Array] *keys The hash keys to include.
    #
    # @return [Hash] A new hash with only the selected keys.
    #
    # @example
    #   hash = { :one => 1, :two => 2, :three => 3 }
    #   Ext::Hash.only(hash, :one, :two) # => { :one => 1, :two => 2 }
    #
    # @api semipublic
    def self.only(hash, *keys)
      h = {}
      keys.each {|k| h[k] = hash[k] if hash.has_key?(k) }
      h
    end

    # Returns a hash that includes everything but the given +keys+.
    #
    # @param [Hash] hash The hash from which to pick the key/value pairs.
    # @param [Array] *keys The hash keys to exclude.
    #
    # @return [Hash] A new hash without the specified keys.
    #
    # @example
    #   hash = { :one => 1, :two => 2, :three => 3 }
    #   Ext::Hash.except(hash, :one, :two) # => { :three => 3 }
    #
    # @api semipublic
    def self.except(hash, *keys)
      self.except!(hash.dup, *keys)
    end

    # Removes the specified +keys+ from the given +hash+.
    #
    # @param [Hash] hash The hash to modify.
    # @param [Array] *keys The hash keys to exclude.
    #
    # @return [Hash] +hash+
    #
    # @example
    #   hash = { :one => 1, :two => 2, :three => 3 }
    #   Ext::Hash.except!(hash, :one, :two)
    #   hash # => { :three => 3 }
    #
    # @api semipublic
    def self.except!(hash, *keys)
      keys.each { |key| hash.delete(key) }
      hash
    end

    # Converts the specified +hash+ to a {Mash}.
    #
    # @param [Hash] hash The hash to convert.
    # @return [Mash] The {Mash} for the specified +hash+.
    #
    # @api semipublic
    def self.to_mash(hash)
      h = Mash.new(hash)
      h.default = hash.default
      h
    end
  end
end; end

Version data entries

11 entries across 11 versions & 4 rubygems

Version Path
sbf-dm-core-1.3.0 lib/dm-core/support/ext/hash.rb
sbf-dm-core-1.3.0.beta lib/dm-core/support/ext/hash.rb
ardm-core-1.3.0 lib/dm-core/support/ext/hash.rb
ardm-core-1.2.1 lib/dm-core/support/ext/hash.rb
dm-core-1.2.1 lib/dm-core/support/ext/hash.rb
ghost_dm-core-1.3.0.beta lib/dm-core/support/ext/hash.rb
dm-core-1.2.0 lib/dm-core/support/ext/hash.rb
dm-core-1.2.0.rc2 lib/dm-core/support/ext/hash.rb
dm-core-1.2.0.rc1 lib/dm-core/support/ext/hash.rb
dm-core-1.1.0 lib/dm-core/support/ext/hash.rb
dm-core-1.1.0.rc3 lib/dm-core/ext/hash.rb