Class: Factbase::Sum
Overview
This class represents a specialized ‘sum’ term. This term calculates the sum of values for a specified key.
Instance Method Summary collapse
-
#evaluate(_fact, maps, _fb) ⇒ Integer
Evaluate term on a fact.
-
#initialize(operands) ⇒ Sum
constructor
Constructor.
Methods inherited from TermBase
Constructor Details
#initialize(operands) ⇒ Sum
Constructor.
13 14 15 16 17 |
# File 'lib/factbase/terms/sum.rb', line 13 def initialize(operands) super() @operands = operands @op = :sum end |
Instance Method Details
#evaluate(_fact, maps, _fb) ⇒ Integer
Evaluate term on a fact.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/factbase/terms/sum.rb', line 24 def evaluate(_fact, maps, _fb) k = @operands[0] raise "A symbol is expected, but '#{k}' provided" unless k.is_a?(Symbol) sum = 0 maps.each do |m| vv = m[k.to_s] next if vv.nil? vv = [vv] unless vv.respond_to?(:to_a) vv.each do |v| sum += v end end sum end |