Class: Hash

Inherits:
Object show all
Defined in:
lib/extensions/deep_find.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#deep_find(key, uniq: true) ⇒ nil, Object

Searches for a key in nested hashes and arrays. Returns matching values or nil.

Parameters:

  • key (Object)

    Key to search for.

  • uniq (Boolean) (defaults to: true)

    If true, deduplicates results.

Returns:



9
10
11
12
13
14
15
16
17
# File 'lib/extensions/deep_find.rb', line 9

def deep_find(key, uniq: true)
  result = collect_values(key)
  result.compact!
  result.delete_if { |i| i.is_a?(Array) && i.empty? }
  result.uniq! if uniq
  return nil if result.empty?

  result.size == 1 ? result.first : result
end