
module Enumerable

  # Produces a hash from an Enumerable with index for keys.
  #
  #   enu = 'a'..'b'
  #   enu.to_h  #=> { 0=>'a', 1=>'b' }
  #
  # If a block is passed, the hash values will be set by 
  # calling the block with the enumerated element and it's
  # counter.
  #
  #   enu = 'a'..'b'
  #   enu.to_h{ |e,i| e }  #=> { 0=>'a', 1=>'b' }
  #
  # See also #graph.
  #
  def to_h( &blk )
    h = {}
    if block_given?
      each_with_index{ |e,i| h[i] = blk.call(e,i) }
    else
      each_with_index{ |e,i| h[i] = e }
    end
    h
  end

end


#  _____         _
# |_   _|__  ___| |_
#   | |/ _ \/ __| __|
#   | |  __/\__ \ |_
#   |_|\___||___/\__|
#
=begin test

  require 'test/unit'

  class TCEnumerable < Test::Unit::TestCase

    def test_to_h
      a = [:a,:b,:c]
      assert_equal( { 0=>:a, 1=>:b, 2=>:c }, a.to_h )
    end

  end

=end
