Sha256: 7a6e21915c3410417d73289ba7def615f78590690d799c933816aa3235c7bc64

Contents?: true

Size: 826 Bytes

Versions: 107

Compression:

Stored size: 826 Bytes

Contents

module OrigenTesters
  module Parser
    class SearchableHash < ::Hash
      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
    end
  end
end

Version data entries

107 entries across 107 versions & 1 rubygems

Version Path
origen_testers-0.52.9 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.52.8 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.52.7 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.52.6 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.52.5 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.52.4 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.52.3 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.52.1 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.52.0 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.51.5 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.51.4 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.51.3 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.51.2 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.51.1 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.51.0 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.50.0 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.49.4 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.49.3 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.49.2 lib/origen_testers/parser/searchable_hash.rb
origen_testers-0.49.1 lib/origen_testers/parser/searchable_hash.rb