Class: Origen::Tester::Parser::SearchableArray

Inherits:
Array show all
Defined in:
lib/origen/tester/parser/searchable_array.rb

Direct Known Subclasses

J750::Parser::Flow, J750::Parser::Flows, Ultraflex::Parser::Flow, Ultraflex::Parser::Flows

Instance Method Summary (collapse)

Methods inherited from Array

#dups, #dups?, #dups_with_index, #ids

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_array.rb', line 5

def where(conditions)
  exact = conditions.delete(:exact)
  results = SearchableArray.new
  each do |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