Sha256: 782f04b998b60679198996db9321991299d2bcb1f5a8bc73d50d985fd27124cc

Contents?: true

Size: 952 Bytes

Versions: 43

Compression:

Stored size: 952 Bytes

Contents

module Mongoid
  module Matcher

    # @api private
    module Not
      module_function def matches?(exists, value, condition)
        case condition
        when ::Regexp, BSON::Regexp::Raw
          !Regex.matches?(exists, value, condition)
        when Hash
          if condition.empty?
            raise Errors::InvalidQuery, "$not argument cannot be an empty hash: #{Errors::InvalidQuery.truncate_expr(condition)}"
          end

          condition.all? do |(k, cond_v)|
            k = k.to_s
            unless k.start_with?('$')
              raise Errors::InvalidQuery, "$not arguments must be operators: #{Errors::InvalidQuery.truncate_expr(k)}"
            end

            !FieldOperator.get(k).matches?(exists, value, cond_v)
          end
        else
          raise Errors::InvalidQuery, "$not argument must be a Hash or a regular expression: #{Errors::InvalidQuery.truncate_expr(condition)}"
        end
      end
    end
  end
end

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
mongoid-8.0.10 lib/mongoid/matcher/not.rb
mongoid-8.1.10 lib/mongoid/matcher/not.rb
mongoid-8.1.9 lib/mongoid/matcher/not.rb
mongoid-8.0.9 lib/mongoid/matcher/not.rb
mongoid-8.1.8 lib/mongoid/matcher/not.rb
mongoid-8.1.7 lib/mongoid/matcher/not.rb
mongoid-8.1.6 lib/mongoid/matcher/not.rb
mongoid-8.0.8 lib/mongoid/matcher/not.rb
mongoid-8.1.5 lib/mongoid/matcher/not.rb
mongoid-8.1.4 lib/mongoid/matcher/not.rb
mongoid-8.0.7 lib/mongoid/matcher/not.rb
mongoid-8.1.3 lib/mongoid/matcher/not.rb
mongoid-8.1.2 lib/mongoid/matcher/not.rb
mongoid-8.0.6 lib/mongoid/matcher/not.rb
mongoid-7.5.4 lib/mongoid/matcher/not.rb
mongoid-8.1.1 lib/mongoid/matcher/not.rb
mongoid-8.0.5 lib/mongoid/matcher/not.rb
mongoid-8.1.0 lib/mongoid/matcher/not.rb
mongoid-7.5.3 lib/mongoid/matcher/not.rb
mongoid-8.0.4 lib/mongoid/matcher/not.rb