Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/ds_hash/hash_core_ext.rb
Instance Method Summary collapse
- #clean ⇒ Object (also: #compact)
- #clean! ⇒ Object (also: #compact!)
- #deep_fetch(*keys) ⇒ Object
- #deep_key?(*keys) ⇒ Boolean
Instance Method Details
#clean ⇒ Object Also known as: compact
36 37 38 39 |
# File 'lib/ds_hash/hash_core_ext.rb', line 36 def clean hsh = self.deep_dup hsh.clean! end |
#clean! ⇒ Object Also known as: compact!
21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/ds_hash/hash_core_ext.rb', line 21 def clean! swoop = Proc.new { |k, v| if v.respond_to? 'clean!' v.clean! false elsif v.respond_to? 'compact!' v.compact! false else v.to_s.empty? end } delete_if &swoop end |
#deep_fetch(*keys) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/ds_hash/hash_core_ext.rb', line 56 def deep_fetch *keys def_value = keys.pop unless keys[keys.size-1].is_a? Symbol key = keys.shift if !key.is_a? Symbol return nil elsif keys.empty? if block_given? ret = yield self[key] || {} else ret = self[key] end elsif self[key].is_a? Hash ret = self[key].deep_fetch(*keys) end ret || def_value end |
#deep_key?(*keys) ⇒ Boolean
47 48 49 50 51 52 |
# File 'lib/ds_hash/hash_core_ext.rb', line 47 def deep_key? *keys key = keys.shift return key?(key) if keys.empty? return self[key].deep_key?(*keys) if self[key].is_a? Hash false end |