Class: Factbase::Agg

Inherits:
TermBase show all
Defined in:
lib/factbase/terms/agg.rb

Overview

The term ‘agg’ that aggregates.

Instance Method Summary collapse

Methods included from TermShared

#to_s

Constructor Details

#initialize(operands = []) ⇒ Agg

Constructor.

Parameters:

  • operands (Array) (defaults to: [])

    Operands



11
12
13
14
15
# File 'lib/factbase/terms/agg.rb', line 11

def initialize(operands = [])
  super()
  @operands = operands
  @op = :agg
end

Instance Method Details

#evaluate(fact, maps, fb) ⇒ Object

Evaluate term on a fact.

Parameters:

Returns:

  • (Object)

    The result of evaluation



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/factbase/terms/agg.rb', line 22

def evaluate(fact, maps, fb)
  assert_args(2)
  selector = @operands[0]
  unless selector.is_a?(Factbase::Term) || selector.is_a?(Factbase::TermBase)
    raise "A term is expected, but '#{selector}' provided"
  end
  term = @operands[1]
  unless term.is_a?(Factbase::Term) || selector.is_a?(Factbase::TermBase)
    raise "A term is expected, but '#{term}' provided"
  end
  subset = fb.query(selector, maps).each(fb, fact).to_a
  term.evaluate(nil, subset, fb)
end