class HashWithIndifferentAccess

Public Instance Methods

&(keys) click to toggle source
# File lib/invoca/utils/hash_with_indifferent_access.rb, line 16
def &(keys)
  res = HashWithIndifferentAccess.new
  keys.each do |k|
    k = k.to_s if k.is_a?(Symbol)
    res[k] = self[k] if has_key?(k)
  end
  res
end
-(keys) click to toggle source

rubocop:disable Naming/BinaryOperatorParameterName

# File lib/invoca/utils/hash_with_indifferent_access.rb, line 9
def -(keys)
  res = HashWithIndifferentAccess.new
  keys = keys.map { |k| k.is_a?(Symbol) ? k.to_s : k }
  each_pair { |k, v| res[k] = v unless k.in?(keys) }
  res
end
partition_hash(keys = nil) { |k, v| ... } click to toggle source

rubocop:enable Naming/BinaryOperatorParameterName

# File lib/invoca/utils/hash_with_indifferent_access.rb, line 26
def partition_hash(keys = nil)
  keys = keys&.map { |k| k.is_a?(Symbol) ? k.to_s : k }
  yes = HashWithIndifferentAccess.new
  no = HashWithIndifferentAccess.new
  each do |k, v|
    if block_given? ? yield(k, v) : keys.include?(k)
      yes[k] = v
    else
      no[k] = v
    end
  end
  [yes, no]
end