Sha256: aa78a82c14486290a060ce51c880fbe63498b98c7723de56555c8bb90a87c9d7
Contents?: true
Size: 1.17 KB
Versions: 3
Compression:
Stored size: 1.17 KB
Contents
#-- # Credits for original version goes to Zallus Kanite and Gavin Sinclair. #++ #-- # Hash#graph! is only useful for Hash. It is not generally # applicable to Enumerable. #++ require 'facets/core/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 } # 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 end # _____ _ # |_ _|__ ___| |_ # | |/ _ \/ __| __| # | | __/\__ \ |_ # |_|\___||___/\__| # =begin test require 'test/unit' class TestEnumerable < 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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
facets-1.8.49 | lib/facets/core/enumerable/graph.rb |
facets-1.8.51 | lib/facets/core/enumerable/graph.rb |
facets-1.8.54 | lib/facets/core/enumerable/graph.rb |