Sha256: 9f12ddfac37c4d1835186f797be5002773e074a9326ed569651c2fe0e1f9e2c2

Contents?: true

Size: 1.34 KB

Versions: 4

Compression:

Stored size: 1.34 KB

Contents

# encoding: utf-8

module Veritas
  module Algebra
    class Summarization

      # Summaries for all aggregate functions
      class Summaries

        # Initialize Summaries
        #
        # @param [Hash{Symbol => #call}] summarizers
        #
        # @return [undefined]
        #
        # @api private
        def initialize(summarizers)
          @summaries = {}
          summarizers.each do |name, summarizer|
            @summaries[name] = Summary.new(summarizer)
          end
        end

        # Execute all summarizers with the tuple, summarized by the header
        #
        # @example
        #   summaries = summaries.summarize_by(header, tuple)
        #
        # @param [Header] header
        #
        # @param [Tuple] tuple
        #
        # @return [self]
        #
        # @api public
        def summarize_by(header, tuple)
          projection = tuple.project(header)
          @summaries.each_value do |summary|
            summary.summarize_by(projection, tuple)
          end
          self
        end

        # Return the summaries as a Hash
        #
        # @example
        #   hash = summaries.to_hash
        #
        # @return [Hash]
        #
        # @api public
        def to_hash
          @summaries
        end

      end # class Summaries
    end # class Summarization
  end # module Algebra
end # module Veritas

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
veritas-0.0.7 lib/veritas/algebra/summarization/summaries.rb
veritas-0.0.6 lib/veritas/algebra/summarization/summaries.rb
veritas-0.0.5 lib/veritas/algebra/summarization/summaries.rb
veritas-0.0.4 lib/veritas/algebra/summarization/summaries.rb