Sha256: b35fd59096b93607717d3404ad4e2a0501773badfb107724f3971bc2ba6532cd

Contents?: true

Size: 846 Bytes

Versions: 2

Compression:

Stored size: 846 Bytes

Contents

module Tester
  module Parser
    class SearchableArray < ::Array
      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
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
origen_testers-0.13.2 lib/origen_testers/parser/searchable_array.rb
origen_testers-0.10.0 lib/origen_testers/parser/searchable_array.rb