Sha256: a43ec133471fbe3f7fda011dc94f90dd42556f2ed61274034b239405f376f7c2

Contents?: true

Size: 890 Bytes

Versions: 1

Compression:

Stored size: 890 Bytes

Contents

module CoreExt
  module Hash
    
    
    
    def pick(*picks)
      picks = picks.flatten
      
      mapped_picks = {}
      picks.each do |pick|
        if pick.is_a?(Hash)
          mapped_picks.merge!(pick)
        else
          mapped_picks[pick] = pick
        end
      end
      
      mapped_picks.inject({}) do |result, (key, new_key)|
        result[new_key] = self[key] if self.key?(key)
        result
      end
    end
    
    
    
    def pick!(*picks)
      picks = picks.flatten
      keys.each {|key| self.delete(key) unless picks.member?(key) }
    end
    
    
    
    def except(*picks)
      result = self.dup
      result.except!(*picks)
      result
    end
    
    
    
    def except!(*picks)
      picks = picks.flatten
      keys.each {|key| self.delete(key) if picks.member?(key) }
    end
    
    
    
  end
end

Hash.send :include, CoreExt::Hash

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
houston-core-0.5.0.beta1 lib/core_ext/hash.rb