Class: OrigenTesters::Parser::SearchableHash

Inherits:
Hash
  • Object
show all
Defined in:
lib/origen_testers/parser/searchable_hash.rb

Instance Method Summary collapse

Instance Method Details

#where(conditions) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/origen_testers/parser/searchable_hash.rb', line 4

def where(conditions)
  exact = conditions.delete(:exact)
  results = SearchableArray.new
  each do |key, item|
    if conditions.all? do |attr, val|
         if val.is_a?(Array)
           if exact
             val.any? { |v| item.send(attr).to_s == v.to_s }
           else
             val.any? { |v| item.send(attr).to_s =~ /#{v.to_s}/ }
           end
         else
           if exact
             item.send(attr).to_s == val.to_s
           else
             item.send(attr).to_s =~ /#{val.to_s}/
           end
         end
       end
      results << item
    end
  end
  results
end