class Axiom::Algebra::Summarization::Summary
The summary for an aggregate function grouped by tuple
Public Class Methods
new(summarizer)
click to toggle source
Initialize a Summary
@param [#call] summarizer
@return [undefined]
@api private
# File lib/axiom/algebra/summarization/summary.rb, line 17 def initialize(summarizer) @summarizer = summarizer @summary = Hash.new(summary_default) end
Public Instance Methods
call(tuple)
click to toggle source
Return the finalized summary for a tuple
@example
object = summary.call(tuple)
@param [Tuple] tuple
@return [Object]
@api public
# File lib/axiom/algebra/summarization/summary.rb, line 50 def call(tuple) summary_finalize(@summary[tuple]) end
summarize_by(projection, tuple)
click to toggle source
Summarize the aggregate function by a tuple
@example
summary = summary.summarize_by(projection, tuple)
@param [Tuple] projection
the tuple projection to summarize the results by
@param [Tuple] tuple
the tuple to execute the aggregate function with
@return [self]
@api public
# File lib/axiom/algebra/summarization/summary.rb, line 35 def summarize_by(projection, tuple) @summary[projection] = @summarizer.call(@summary[projection], tuple) self end
Private Instance Methods
summary_default()
click to toggle source
Return the summary default
@return [Object]
@api private
# File lib/axiom/algebra/summarization/summary.rb, line 61 def summary_default @summarizer.default if @summarizer.respond_to?(:default) end
summary_finalize(value)
click to toggle source
Finalize the summary value if possible
@param [Object] value
@return [Object]
@api private
# File lib/axiom/algebra/summarization/summary.rb, line 72 def summary_finalize(value) if @summarizer.respond_to?(:finalize) @summarizer.finalize(value) else value end end