Sha256: e22cf7376805ba9b513fd9888f0d56d4395fe0c09a0eb4690488dc7089e2cd35
Contents?: true
Size: 1.95 KB
Versions: 4
Compression:
Stored size: 1.95 KB
Contents
# encoding: utf-8 module Veritas module Algebra class Summarization # The summary for an aggregate function grouped by tuple class Summary # Initialize a Summary # # @param [#call] summarizer # # @return [undefined] # # @api private def initialize(summarizer) @summarizer = summarizer @summary = Hash.new(summary_default) end # 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 def summarize_by(projection, tuple) @summary[projection] = @summarizer.call(@summary[projection], tuple) self end # Return the finalized summary for a tuple # # @example # object = summary.call(tuple) # # @param [Tuple] tuple # # @return [Object] # # @api public def call(tuple) summary_finalize(@summary[tuple]) end private # Return the summary default # # @return [Object] # # @api private def summary_default @summarizer.default if @summarizer.respond_to?(:default) end # Finalize the summary value if possible # # @param [Object] value # # @return [Object] # # @api private def summary_finalize(value) if @summarizer.respond_to?(:finalize) @summarizer.finalize(value) else value end end end # class Summary end # class Summarization end # module Algebra end # module Veritas
Version data entries
4 entries across 4 versions & 1 rubygems