Sha256: 1b41643b8504620bb1c46a0f941e3e0c57251bfae117b6d410ad80a18b2a2a41
Contents?: true
Size: 1.94 KB
Versions: 6
Compression:
Stored size: 1.94 KB
Contents
# encoding: utf-8 module Mongoid #:nodoc: module Matchers #:nodoc: # Contains all the default behavior for checking for matching documents # given MongoDB expressions. class Default attr_accessor :attribute, :document # Creating a new matcher only requires the value. # # @example Create a new matcher. # Default.new("attribute") # # @param [ Object ] attribute The current attribute to check against. # # @since 1.0.0 def initialize(attribute, document = nil) @attribute, @document = attribute, document end # Return true if the attribute and value are equal, or if it is an array # if the value is included. # # @example Does this value match? # default.matches?("value") # # @param [ Object ] value The value to check if it matches. # # @return [ true, false ] True if matches, false if not. # # @since 1.0.0 def matches?(value) attribute.is_a?(Array) ? attribute.include?(value) : value === attribute end protected # Convenience method for getting the first value in a hash. # # @example Get the first value. # matcher.first(:test => "value") # # @param [ Hash ] hash The has to pull from. # # @return [ Object ] The first value. # # @since 1.0.0 def first(hash) hash.values.first end # If object exists then compare the two, otherwise return false # # @example Determine if we can compare. # matcher.determine("test", "$in") # # @param [ Object ] value The value to compare with. # @param [ Symbol, String ] operator The comparison operation. # # @return [ true, false ] The comparison or false. # # @since 1.0.0 def determine(value, operator) attribute ? attribute.send(operator, first(value)) : false end end end end
Version data entries
6 entries across 6 versions & 2 rubygems