Sha256: 2ccb6d1045793850afa0fa40fdd6864d1604073842436c17e9d9d5b8ab252fa5

Contents?: true

Size: 872 Bytes

Versions: 3

Compression:

Stored size: 872 Bytes

Contents

#!/usr/bin/env ruby
# -*- encoding: utf-8 -*-
# Copyright Steffie Dorn <mail@muflax.com>, 2013
# License: GNU GPL 3 <http://www.gnu.org/copyleft/gpl.html>

# simple auto-vivifying hash
# TODO support nested hashes
def vivaHash default=[]
  hash = if default.duplicable?	; Hash.new{|h, k| h[k] = default.dup}
         else                  	; Hash.new{|h, k| h[k] = default}
         end

  hash
end

# missing methods
class Hash
  def transform_keys
    return enum_for(:transform_keys) { size } unless block_given?
    result = {}
    each_key do |key|
      result[yield(key)] = self[key]
    end
    result
  end unless method_defined? :transform_keys

  def transform_keys!
    return enum_for(:transform_keys!) { size } unless block_given?
    keys.each do |key|
      self[yield(key)] = delete(key)
    end
    self
  end unless method_defined? :transform_keys!
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
muflax-0.5.5 lib/muflax/hash.rb
muflax-0.5.3 lib/muflax/hash.rb
muflax-0.5.2 lib/muflax/hash.rb