in itchef/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