Class Rewrite::Prelude::Try
In: lib/rewrite/prelude/try.rb
Parent: SexpProcessor

Adds a polite method invocation to Ruby:

  with(try) do
    ...
    @phone = Location.find(:first, ...elided... ).try.phone
    ...
  end

Based on "try()":ozmm.org/posts/try.html by Chris Wanstrath

It also works with parameters, blocks, and procs passed as blocks.

Works by rewriting expressions like:

  numbers.try(:sum)

Into:

 lambda { |receiver, message|
   receiver.send message if receiver.respond_to? message
 }.call(numbers, :sum)

See also: Please, Andand

Methods

Public Instance methods

[Validate]