module CoreExtensions::Hash

HASH ############################################################################################

Public Instance Methods

deep_each(&blk) click to toggle source
# File lib/core_ext.rb, line 133
def deep_each(&blk)
  keys.each do |key|
    val = self[key]
    if blk.arity == 3
      blk.call(key, val, self)
      val = self[key]
    else
      blk.call(key, val)
    end
    val.deep_each(&blk)  if val.respond_to?(:deep_each)
  end
  self
end
deep_map(&blk) click to toggle source
# File lib/core_ext.rb, line 147
def deep_map(&blk)
  keys.each do |key|
    val = self[key]
    (blk.arity == 3) ? blk.call(key, val, self) : blk.call(key, val)
    val.deep_each(&blk)  if val.respond_to?(:deep_each)
  end
  self
end
deep_reject(&blk) click to toggle source
# File lib/core_ext.rb, line 121
def deep_reject(&blk)
  dup.deep_reject!(&blk)
end
deep_reject!(&blk) click to toggle source
# File lib/core_ext.rb, line 125
def deep_reject!(&blk)
  each do |key, val|
    val.deep_reject!(&blk)  if val.respond_to?(:deep_reject!)
    delete(key)  if blk.call(key, val)
  end
  self
end
force_utf8() click to toggle source
# File lib/core_ext.rb, line 156
def force_utf8
  map do |key, val|
    [
      key.respond_to?(:force_utf8) ? key.force_utf8 : key,
      val.respond_to?(:force_utf8) ? val.force_utf8 : val,
    ]
  end.to_h
end
safe_dig(*path) click to toggle source
# File lib/core_ext.rb, line 165
def safe_dig(*path)
  dig(*path)
rescue TypeError => ex
  return nil  if ex.message.include?('does not have #dig method')
  raise
end