aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/object/tap.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2009-05-20 16:49:21 -0700
committerJeremy Kemper <jeremy@bitsweat.net>2009-05-20 18:12:44 -0700
commit68398838544a778244e6028f2c30deb7313ea0b2 (patch)
treed37102f36827549733ac8f241fd965003d7eedd8 /activesupport/lib/active_support/core_ext/object/tap.rb
parent429a00f225b24b938575ed40d11fa07987e12a6f (diff)
downloadrails-68398838544a778244e6028f2c30deb7313ea0b2.tar.gz
rails-68398838544a778244e6028f2c30deb7313ea0b2.tar.bz2
rails-68398838544a778244e6028f2c30deb7313ea0b2.zip
Break up misc Object extensions
Diffstat (limited to 'activesupport/lib/active_support/core_ext/object/tap.rb')
-rw-r--r--activesupport/lib/active_support/core_ext/object/tap.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/object/tap.rb b/activesupport/lib/active_support/core_ext/object/tap.rb
new file mode 100644
index 0000000000..db7e715e2d
--- /dev/null
+++ b/activesupport/lib/active_support/core_ext/object/tap.rb
@@ -0,0 +1,16 @@
+class Object
+ # Yields <code>x</code> to the block, and then returns <code>x</code>.
+ # The primary purpose of this method is to "tap into" a method chain,
+ # in order to perform operations on intermediate results within the chain.
+ #
+ # (1..10).tap { |x| puts "original: #{x.inspect}" }.to_a.
+ # tap { |x| puts "array: #{x.inspect}" }.
+ # select { |x| x%2 == 0 }.
+ # tap { |x| puts "evens: #{x.inspect}" }.
+ # map { |x| x*x }.
+ # tap { |x| puts "squares: #{x.inspect}" }
+ def tap
+ yield self
+ self
+ end unless Object.respond_to?(:tap)
+end