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