Sha256: 4b74673ffcb9019c95597fa89b3851429b92c8e2782856f1df19ec146307c0a6

Contents?: true

Size: 1.02 KB

Versions: 14

Compression:

Stored size: 1.02 KB

Contents

#--
# Credit goes to Florian Gross (flgr) for orignal version.
# Credit goes to Nobuhiro Imai for latest version.
#++

class Symbol

  # Turn a symbol into a proc calling the method to
  # which it refers.
  #
  #   up = :upcase.to_proc
  #   up.call("hello")  #=> HELLO
  #
  # More useful is the fact that this allows <tt>&</tt>
  # to be used to coerce Symbol into Proc. 
  #
  #   %w{foo bar qux}.map(&:upcase)   #=> ["FOO","BAR","QUX"]
  #   [1, 2, 3].inject(&:+)           #=> 6
  #

  def to_proc
    Proc.new{|*args| args.shift.__send__(self, *args)}
  end

end



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

  require 'test/unit'

  class TCSymbol < Test::Unit::TestCase

    def test_001
      assert_instance_of(Proc, up = :upcase.to_proc )
      assert_equal( "HELLO", up.call("hello") )
    end

    def test_002
      q = [[1,2,3], [4,5,6], [7,8,9]].map(&:reverse)
      a = [[3, 2, 1], [6, 5, 4], [9, 8, 7]]
      assert_equal( a, q )
    end

  end

=end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
facets-1.4.2 lib/facets/core/symbol/to_proc.rb
facets-1.4.3 lib/facets/core/symbol/to_proc.rb
facets-1.4.5 lib/facets/core/symbol/to_proc.rb
facets-1.4.4 lib/facets/core/symbol/to_proc.rb
facets-1.7.0 lib/facets/core/symbol/to_proc.rb
facets-1.7.30 lib/facets/core/symbol/to_proc.rb
facets-1.7.38 lib/facets/core/symbol/to_proc.rb
facets-1.7.46 lib/facets/core/symbol/to_proc.rb
facets-1.8.0 lib/facets/core/symbol/to_proc.rb
facets-1.8.20 lib/facets/core/symbol/to_proc.rb
facets-1.8.49 lib/facets/core/symbol/to_proc.rb
facets-1.8.51 lib/facets/core/symbol/to_proc.rb
facets-1.8.54 lib/facets/core/symbol/to_proc.rb
facets-1.8.8 lib/facets/core/symbol/to_proc.rb