Class: PredicateMatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/predicate_matcher.rb

Direct Known Subclasses

AndPredicateMatcher

Instance Method Summary collapse

Constructor Details

#initialize(predicate) ⇒ PredicateMatcher

Returns a new instance of PredicateMatcher.



2
3
4
# File 'lib/predicate_matcher.rb', line 2

def initialize(predicate)
  @predicate = predicate
end

Instance Method Details

#match(value) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/predicate_matcher.rb', line 5

def match(value)
  if @predicate.length > 1
    matcher = AndPredicateMatcher.new(@predicate)
    return matcher.match(value)
  end
  case @predicate.keys.first
  when "$exists"
    return @predicate.values.first == !value.nil? 
  when "$in"
    return @predicate.values.first.include?(value)
  when "$nin"
    return !@predicate.values.first.include?(value)
  when "$gt"
    return value > @predicate.values.first
  when "$gte"
    return value >= @predicate.values.first
  when "$lt"
    return value < @predicate.values.first
  when "$lte"
    return value <= @predicate.values.first
  when "$ne"
    return value != @predicate.values.first
  when "$mod"
    return value % @predicate.values.first[0] == @predicate.values.first[1]
  else
    raise NotImplementedError
  end  
end