Module: CoreExtensions::Hash
- Defined in:
- lib/core_ext.rb
Overview
HASH ############################################################################################
Instance Method Summary collapse
- #deep_each(&blk) ⇒ Object
- #deep_map(&blk) ⇒ Object
- #deep_reject(&blk) ⇒ Object
- #deep_reject!(&blk) ⇒ Object
- #force_utf8 ⇒ Object
- #safe_dig(*path) ⇒ Object
Instance Method Details
#deep_each(&blk) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 |
# 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) ⇒ Object
147 148 149 150 151 152 153 154 |
# 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) ⇒ Object
121 122 123 |
# File 'lib/core_ext.rb', line 121 def deep_reject(&blk) dup.deep_reject!(&blk) end |
#deep_reject!(&blk) ⇒ Object
125 126 127 128 129 130 131 |
# 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 ⇒ Object
156 157 158 159 160 161 162 163 |
# 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) ⇒ Object
165 166 167 168 169 170 |
# File 'lib/core_ext.rb', line 165 def safe_dig(*path) dig(*path) rescue TypeError => ex return nil if ex..include?('does not have #dig method') raise end |