diff options
author | José Valim <jose.valim@gmail.com> | 2010-08-02 18:40:20 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-08-02 18:40:20 +0200 |
commit | 88b5f938cf7d3eb26ad204451a4dbb9c2cf4f571 (patch) | |
tree | 2da69781f8519321d699f7edb431c70629befbfe /activesupport/lib | |
parent | 9effe3cc18182abbcf0a8b01635a34ca77b67e02 (diff) | |
download | rails-88b5f938cf7d3eb26ad204451a4dbb9c2cf4f571.tar.gz rails-88b5f938cf7d3eb26ad204451a4dbb9c2cf4f571.tar.bz2 rails-88b5f938cf7d3eb26ad204451a4dbb9c2cf4f571.zip |
Bring returning back to ease migration.
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/core_ext/object.rb | 1 | ||||
-rw-r--r-- | activesupport/lib/active_support/core_ext/object/returning.rb | 43 |
2 files changed, 44 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/object.rb b/activesupport/lib/active_support/core_ext/object.rb index 790a26f5c1..d671da6711 100644 --- a/activesupport/lib/active_support/core_ext/object.rb +++ b/activesupport/lib/active_support/core_ext/object.rb @@ -2,6 +2,7 @@ require 'active_support/core_ext/object/acts_like' require 'active_support/core_ext/object/blank' require 'active_support/core_ext/object/duplicable' require 'active_support/core_ext/object/try' +require 'active_support/core_ext/object/returning' require 'active_support/core_ext/object/conversions' require 'active_support/core_ext/object/instance_variables' diff --git a/activesupport/lib/active_support/core_ext/object/returning.rb b/activesupport/lib/active_support/core_ext/object/returning.rb new file mode 100644 index 0000000000..07250b2a27 --- /dev/null +++ b/activesupport/lib/active_support/core_ext/object/returning.rb @@ -0,0 +1,43 @@ +class Object + # Returns +value+ after yielding +value+ to the block. This simplifies the + # process of constructing an object, performing work on the object, and then + # returning the object from a method. It is a Ruby-ized realization of the K + # combinator, courtesy of Mikael Brockman. + # + # ==== Examples + # + # # Without returning + # def foo + # values = [] + # values << "bar" + # values << "baz" + # return values + # end + # + # foo # => ['bar', 'baz'] + # + # # returning with a local variable + # def foo + # returning values = [] do + # values << 'bar' + # values << 'baz' + # end + # end + # + # foo # => ['bar', 'baz'] + # + # # returning with a block argument + # def foo + # returning [] do |values| + # values << 'bar' + # values << 'baz' + # end + # end + # + # foo # => ['bar', 'baz'] + def returning(value) + ActiveSupport::Deprecation.warn('Object#returning has been deprecated in favor of Object#tap.', caller) + yield(value) + value + end +end
\ No newline at end of file |