Sha256: fb7d836bae343275506a4a37be8455c4efff8147e33964de7fa0bf1db2aa5d39

Contents?: true

Size: 838 Bytes

Versions: 29

Compression:

Stored size: 838 Bytes

Contents

module Bmg
  class Summarizer
    #
    # Generic summarizer that takes a Proc àla each_with_object.
    #
    # Example:
    #
    #   # direct ruby usage
    #   Bmg::Summarizer.by_proc{|t,memo| ... }.summarize(...)
    #
    class ByProc < Summarizer

      def initialize(least, by_proc)
        @least = least
        @by_proc = by_proc
      end

      # Returns [] as least value.
      def least
        @least
      end

      # Adds val to the memo array
      def happens(memo, val)
        @by_proc.call(val, memo)
      end

      def finalize(memo)
        memo
      end

    end # class ByProc

    # Factors a distinct summarizer
    def self.by_proc(least = nil, proc = nil, &bl)
      least, proc = nil, least if least.is_a?(Proc)
      ByProc.new(least, proc || bl)
    end

  end # class Summarizer
end # module Bmg

Version data entries

29 entries across 29 versions & 1 rubygems

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