#!/usr/bin/env ruby # -*- encoding: utf-8 -*- # Copyright Steffie Dorn , 2013 # License: GNU GPL 3 # 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