Class: Origen::Tester::Parser::SearchableHash

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

Direct Known Subclasses

J750::Parser::DCSpecs, J750::Parser::PatternSets, J750::Parser::TestInstances, Ultraflex::Parser::DCSpecs, Ultraflex::Parser::PatternSets, Ultraflex::Parser::TestInstances

Instance Method Summary (collapse)

Methods inherited from Hash

#filter, #ids, #intersect?, #intersections, #longest_key, #longest_value, #update_common

Instance Method Details

- (Object) where(conditions)



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

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