Method: Hash#filter

Defined in:
lib/origen/core_ext/hash.rb

#filter(filter) ⇒ Object

Filter a hash by a key filter of various types



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/origen/core_ext/hash.rb', line 26

def filter(filter)
  filtered_hash = {}
  select_logic = case filter
    when String then 'k[Regexp.new(filter)]'
    when (Fixnum || Integer || Float || Numeric) then "k[Regexp.new('#{filter}')]"
    when Regexp then 'k[filter]'
    when Symbol then 'k == filter'
    when NilClass then true
    else true
  end
  # rubocop:disable UnusedBlockArgument
  filtered_hash = select do |k, v|
    [TrueClass, FalseClass].include?(select_logic.class) ? select_logic : !!eval(select_logic)
  end
  filtered_hash
end