Sha256: 7eacdad10eb4844ce3de78c3e3ad9c81af99551c6ce236cd78167350ecc67647

Contents?: true

Size: 834 Bytes

Versions: 7

Compression:

Stored size: 834 Bytes

Contents

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
  #
  # And other conveniences such as:
  #
  #   %{john terry fiona}.map(&:capitalize)   # -> %{John Terry Fiona}
  #   sum = numbers.inject(&:+)
  #
  # TODO This will be deprecated as of Ruby 1.9, since it will become standard Ruby.
  #
  #   CREDIT Florian Gross (orignal)
  #   CREDIT Nobuhiro Imai (current)

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

  #def to_proc
  #  proc { |obj, *args| obj.send(self, *args) }
  #end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
facets-2.0.5 lib/core/facets/symbol/to_proc.rb
facets-2.0.3 lib/core/facets/symbol/to_proc.rb
facets-2.0.4 lib/core/facets/symbol/to_proc.rb
facets-2.1.2 lib/core/facets/symbol/to_proc.rb
facets-2.1.0 lib/core/facets/symbol/to_proc.rb
facets-2.1.1 lib/core/facets/symbol/to_proc.rb
facets-2.1.3 lib/core/facets/symbol/to_proc.rb