Class: Mongory::Matchers::InMatcher
- Inherits:
-
AbstractMatcher
- Object
- AbstractMatcher
- Mongory::Matchers::InMatcher
- Defined in:
- lib/mongory/matchers/in_matcher.rb
Overview
InMatcher implements the $in operator.
It checks whether the record matches any value in the condition array.
If the record is an array, it succeeds if any item overlaps with the condition.
If the record is a single value (including nil), it matches if it is included in the condition.
Constant Summary
Constants inherited from AbstractMatcher
AbstractMatcher::KEY_NOT_FOUND
Instance Attribute Summary
Attributes inherited from AbstractMatcher
Instance Method Summary collapse
-
#check_validity! ⇒ void
Ensures the condition is an array or range.
-
#raw_proc ⇒ Proc
Creates a raw Proc that performs the in-matching operation.
Methods inherited from AbstractMatcher
#cached_proc, #debug_proc, define_matcher, #initialize, #match, #match?, #render_tree, #uniq_key
Methods included from Utils
included, included_classes, #is_blank?, #is_present?
Constructor Details
This class inherits a constructor from Mongory::Matchers::AbstractMatcher
Instance Method Details
#check_validity! ⇒ void
This method returns an undefined value.
Ensures the condition is an array or range.
49 50 51 52 53 54 |
# File 'lib/mongory/matchers/in_matcher.rb', line 49 def check_validity! return if @condition.is_a?(Array) return if @condition.is_a?(Range) raise TypeError, '$in needs an array or range' end |
#raw_proc ⇒ Proc
Creates a raw Proc that performs the in-matching operation. The Proc checks if any element of the record is in the condition array.
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/mongory/matchers/in_matcher.rb', line 31 def raw_proc condition = @condition Proc.new do |record| if record.is_a?(Array) return false if condition.is_a?(Range) is_present?(condition & record) else condition.include?(record) end end end |