self._filter_hash

in cookbooks/fb_helpers/libraries/fb_helpers.rb [204:248]


    def self._filter_hash(hash, filter, depth = 0)
      unless filter.is_a?(Hash)
        fail 'fb_helpers: the filter argument to filter_hash needs to be a ' +
          "Hash (actual: #{filter.class})"
      end

      filtered_hash = {}

      
      
      
      
      filter.each do |k, v|
        if hash.include?(k)
          if v.nil?
            filtered_hash[k] = hash[k]
          elsif v.is_a?(Hash)
            
            ret = self._filter_hash(hash[k], v, depth + 1)
            
            
            
            unless ret.nil?
              filtered_hash[k] = ret
            end
          else
            fail "fb_helpers: invalid filter passed to filter_hash: #{filter}"
          end
        else
          Chef::Log.debug(
            "fb_helpers: skipping key #{k} as it is missing from the hash",
          )
        end
      end

      
      
      
      if depth > 0 && filtered_hash == {}
        filtered_hash = nil
      end

      filtered_hash
    end