class Collectr::Bag

Public Class Methods

new(collection=nil) click to toggle source
# File lib/collectr/bag.rb, line 5
def initialize(collection=nil)
  @bag = Hash.new{ 0 }
  collection.each{ |item| self << item } if collection
end

Public Instance Methods

<<(obj) click to toggle source
# File lib/collectr/bag.rb, line 15
def <<(obj)
  add(obj)
end
[](obj) click to toggle source
# File lib/collectr/bag.rb, line 19
def [](obj)
  @bag[obj]
end
add(obj) click to toggle source
# File lib/collectr/bag.rb, line 10
def add(obj)
  @bag[obj] += 1
  self
end
as_sorted_counts() click to toggle source
# File lib/collectr/bag.rb, line 49
def as_sorted_counts
  @bag.sort_by{ |key, cnt| -cnt }
end
bag() click to toggle source
# File lib/collectr/bag.rb, line 41
def bag
  @bag
end
count() click to toggle source
# File lib/collectr/bag.rb, line 31
def count
  sum = 0
  each{ |key, val| sum += val }
  sum
end
each(&block) click to toggle source
# File lib/collectr/bag.rb, line 37
def each(&block)
  @bag.each{ |k,v| block.call k,v }
end
empty?() click to toggle source
# File lib/collectr/bag.rb, line 45
def empty?
  @bag.empty?
end
keys() click to toggle source
# File lib/collectr/bag.rb, line 23
def keys
  @bag.keys
end
size() click to toggle source
# File lib/collectr/bag.rb, line 27
def size
  @bag.size
end

Private Instance Methods

initialize_copy(source) click to toggle source

for cloning

Calls superclass method
# File lib/collectr/bag.rb, line 56
def initialize_copy(source)
  @bag = source.bag.clone
  super
end