Method: Predicate::HasSize#evaluate

Defined in:
lib/predicate/nodes/has_size.rb

#evaluate(tuple) ⇒ Object

Raises:



5
6
7
8
9
10
11
# File 'lib/predicate/nodes/has_size.rb', line 5

def evaluate(tuple)
  l, r = left.evaluate(tuple), right.evaluate(tuple)
  r = r..r if r.is_a?(Integer)
  raise Error, "Expected Range, got #{r}" unless r.is_a?(Range)
  raise Error, "Expected #{l} to respond to :size" unless l.respond_to?(:size)
  r === l.size
end