Sha256: b9230f575a59caf308a7f107fd7e5e492240fc8f481165a9b1bf242c3252dbe4

Contents?: true

Size: 1.03 KB

Versions: 31

Compression:

Stored size: 1.03 KB

Contents

module Bmg
  class Summarizer
    #
    # A summarizer that collects multiple summarization as a wrapped
    # tuple.
    #
    # Example:
    #
    #   # direct ruby usage
    #   Bmg::Summarizer.multiple(x: ..., y: ...).summarize(...)
    #
    class Multiple < Summarizer

      def initialize(defs)
        @summarization = Summarizer.summarization(defs)
      end

      # Returns [] as least value.
      def least()
        @summarization.each_pair.each_with_object({}){|(k,v),memo|
          memo[k] = v.least
        }
      end

      # Adds val to the memo array
      def happens(memo, val)
        @summarization.each_pair.each_with_object({}){|(k,v),memo2|
          memo2[k] = v.happens(memo[k], val)
        }
      end

      def finalize(memo)
        @summarization.each_pair.each_with_object({}){|(k,v),memo2|
          memo2[k] = v.finalize(memo[k])
        }
      end

    end # class Multiple

    # Factors a distinct summarizer
    def self.multiple(defs)
      Multiple.new(defs)
    end

  end # class Summarizer
end # module Bmg

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
bmg-0.23.3 lib/bmg/summarizer/multiple.rb
bmg-0.23.2 lib/bmg/summarizer/multiple.rb
bmg-0.23.1 lib/bmg/summarizer/multiple.rb
bmg-0.23.0 lib/bmg/summarizer/multiple.rb
bmg-0.21.5 lib/bmg/summarizer/multiple.rb
bmg-0.21.4 lib/bmg/summarizer/multiple.rb
bmg-0.20.5 lib/bmg/summarizer/multiple.rb
bmg-0.19.3 lib/bmg/summarizer/multiple.rb
bmg-0.21.3 lib/bmg/summarizer/multiple.rb
bmg-0.21.2 lib/bmg/summarizer/multiple.rb
bmg-0.21.0 lib/bmg/summarizer/multiple.rb
bmg-0.20.4 lib/bmg/summarizer/multiple.rb
bmg-0.20.2 lib/bmg/summarizer/multiple.rb
bmg-0.20.1 lib/bmg/summarizer/multiple.rb
bmg-0.20.0 lib/bmg/summarizer/multiple.rb
bmg-0.19.2 lib/bmg/summarizer/multiple.rb
bmg-0.19.1 lib/bmg/summarizer/multiple.rb
bmg-0.19.0 lib/bmg/summarizer/multiple.rb
bmg-0.18.15 lib/bmg/summarizer/multiple.rb
bmg-0.18.14 lib/bmg/summarizer/multiple.rb