Sha256: 3bb281503691b82e12a340b2c0286f151cadf938264cfe8bf4cd9e0c230eb28d

Contents?: true

Size: 1.02 KB

Versions: 7

Compression:

Stored size: 1.02 KB

Contents

require 'facets/hash/count'

module Enumerable

  # Count the number of items in an enumerable equal (==)
  # to the given object(s).
  #
  #   e = [ 'a', 1, 'a' ]
  #
  #   e.count(1)       #=> 1
  #   e.count('a')     #=> 2
  #
  # The method can count more than one item by supplying additional
  # arguments.
  #
  #   e.count('a', 1)  #=> 3
  #
  # A block may also be used to select countable entries.
  #
  #   e.count{ |x| String === x }  #=> 2
  #
  # Note that Hash#count only considers values.
  #
  #   e = { 'a' => 2, 'x' => 2, 'b' => 1 }
  #
  #   e.count(1)  #=> 1
  #   e.count(2)  #=> 2
  #
  # NOTE: This is one of the few method overrides in Facets.
  #
  # CREDIT: Trans

  def count(*items, &block)
    if block || !items.empty?
      r = self
      r = r.select(&block) if block
      r = r.select{ |x| items.any?{ |i| i == x } } if !items.empty?
      r.size
    else
      begin
        size
      rescue
        i=0; each{ |e| i+=1 }; i
      end
    end
  end

end

class Array
  remove_method(:count) rescue nil
end

Version data entries

7 entries across 6 versions & 1 rubygems

Version Path
facets-2.9.3 lib/core/facets/enumerable/count.rb
facets-2.9.2 src/core/facets/enumerable/count.rb
facets-2.9.2 lib/core/facets/enumerable/count.rb
facets-2.9.1 lib/core/facets/enumerable/count.rb
facets-2.9.0 lib/core/facets/enumerable/count.rb
facets-2.9.0.pre.2 lib/core/facets/enumerable/count.rb
facets-2.9.0.pre.1 lib/core/facets/enumerable/count.rb