Sha256: 961de9a4e9f087229dd42c9c4d01798c8fd1ec8d1ef728e60efa035cbb9d9862

Contents?: true

Size: 612 Bytes

Versions: 1

Compression:

Stored size: 612 Bytes

Contents

class Hash
  # addition for histogram aggregation
  # >> {:a=>1, :b=>2} + {:a=>3, :c=>4}
  # => {:a=>4, :b=>2, :c=>4}
  def +(other)
    hash = self.dup
    other.each do |k, v|
      if hash.include? k
        hash[k] += v
      else
        hash[k] = v
      end
    end
    hash
  end

  def map_values!(&blk)
    self.each do |k,v|
      self[k] = yield(v)
    end
  end

  def map_values(&blk)
    self.dup.map_values!(&blk)
  end

  def map!
    self.keys.each do |k|
      v = self.delete(k)
      new_k, new_v = yield [k,v]
      self[new_k] = new_v
    end
    self
  end

  def to_h
    self
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
modesty-0.1.0 lib/modesty/core_ext/hash.rb