Sha256: 6af4d29ee0c6dc2b29f4de1ceff395551b7cc132e849c7ab27ba2e69656f0f5c

Contents?: true

Size: 735 Bytes

Versions: 2

Compression:

Stored size: 735 Bytes

Contents

module Enumerable
  def count_by
    self.inject({}) do |memo, elem|
      key = yield elem
      memo[key] ||= 0
      memo[key] += 1
      memo
    end
  end

  # This method was borrowed from ActiveSupport code
  def group_by
    self.inject({}) do |memo, elem|
      key = yield elem
      memo[key] ||= []
      memo[key] << elem
      memo
    end
  end
  
  # File activesupport/lib/active_support/core_ext/enumerable.rb, line 57
  def sum(identity = 0, &block)
    if block_given?
      map(&block).sum(identity)
    else
      inject { |sum, element| sum + element } || identity
    end
  end

  def uniq_by
    each_with_object({}) do |obj, memo|
      val, data = yield obj
      memo[val] ||= data
    end.values
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rubyc-0.2.0 lib/rubyc/core_extensions.rb
rubyc-0.1.3 lib/rubyc/core_extensions.rb