Sha256: 08ae4e7e04816d3c02401218864f351b1d9d6a44042a889b9561530778497e6d

Contents?: true

Size: 621 Bytes

Versions: 4

Compression:

Stored size: 621 Bytes

Contents

libs = %w(equivalence base all include greater lesser recurse expression)
path = File.dirname(__FILE__)

libs.each do |lib|
  require "#{path}/intersection/match/#{lib}"
end

module Casino
  class Intersection
    attr_accessor :label, :criteria

    delegate :selector, to: :criteria

    def initialize(label, criteria)
      self.label = label
      self.criteria = criteria
    end

    def match?(document)
      selector.keys.map { |key| match_key_against(document, key) }.all?
    end

    private

    def match_key_against(document, key)
      Match::Base.new(document, key, selector).evaluate
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mongoid-casino-0.0.4 lib/casino/intersection.rb
mongoid-casino-0.0.3 lib/casino/intersection.rb
mongoid-casino-0.0.2 lib/casino/intersection.rb
mongoid-casino-0.0.1 lib/casino/intersection.rb