Module: Hashie::Extensions::DeepFind
- Defined in:
- lib/hashie/extensions/deep_find.rb
Instance Method Summary collapse
-
#deep_find(key) ⇒ Object
(also: #deep_detect)
Performs a depth-first search on deeply nested data structures for a key and returns the first occurrence of the key.
-
#deep_find_all(key) ⇒ Object
(also: #deep_select)
Performs a depth-first search on deeply nested data structures for a key and returns all occurrences of the key.
Instance Method Details
#deep_find(key) ⇒ Object Also known as: deep_detect
Performs a depth-first search on deeply nested data structures for a key and returns the first occurrence of the key.
options = {location: {address: '123 Street'}} options.extend(Hashie::Extensions::DeepFind) options.deep_find(:address) # => '123 Street'
class MyHash < Hash include Hashie::Extensions::DeepFind end
my_hash = MyHash.new my_hash[:user] = {address: '123 Street'} my_hash.deep_find(:address) # => '123 Street'
19 20 21 |
# File 'lib/hashie/extensions/deep_find.rb', line 19 def deep_find(key) _deep_find(key) end |
#deep_find_all(key) ⇒ Object Also known as: deep_select
Performs a depth-first search on deeply nested data structures for a key and returns all occurrences of the key.
options = { users: [ { location: '123 Street' }, { location: '234 Street'} ] } options.extend(Hashie::Extensions::DeepFind) options.deep_find_all(:address) # => ['123 Street', '234 Street']
class MyHash < Hash include Hashie::Extensions::DeepFind end
my_hash = MyHash.new my_hash[:users] = [ {address: '123 Street'}, {address: '234 Street'} ] my_hash.deep_find_all(:address) # => ['123 Street', '234 Street']
47 48 49 50 |
# File 'lib/hashie/extensions/deep_find.rb', line 47 def deep_find_all(key) matches = _deep_find_all(key) matches.empty? ? nil : matches end |