Sha256: 39b86a27a00a66a34157b6ffcc349699b7b54b8f87bc57731c42502f0ce919de
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
#-- # Hash#graph! is only good for a Hash. #++ require 'nano/hash/graph' module Enumerable # Like <tt>#map</tt>/<tt>#collect</tt>, but it generates a Hash. The block # is expected to return two values: the key and the value for the new hash. # # numbers = (1..3) # squares = numbers.graph { |n| [n, n*n] } # { 1=>1, 2=>4, 3=>9 } # sq_roots = numbers.graph { |n| [n*n, n] } # { 1=>1, 4=>2, 9=>3 } # #-- # Credits for original version goes to Zallus Kanite and Gavin Sinclair. #++ def graph(&yld) if yld inject({}) do |h,kv| nk, nv = yld[*kv] h[nk] = nv h end else Hash[*self.to_a.flatten] end end # no longer used #alias_method( :build_hash, :graph ) #alias_method( :build_hash!, :graph! ) end # _____ _ # |_ _|__ ___| |_ # | |/ _ \/ __| __| # | | __/\__ \ |_ # |_|\___||___/\__| # =begin test require 'test/unit' class TCEnumerable < Test::Unit::TestCase def test_graph numbers = (1..3) squares = numbers.graph{ |n| [n, n*n] } assert_equal( {1=>1, 2=>4, 3=>9}, squares ) sq_roots = numbers.graph{ |n| [n*n, n] } assert_equal( {1=>1, 4=>2, 9=>3}, sq_roots ) end end =end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
facets-0.9.0 | lib/nano/enumerable/graph.rb |