aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
diff options
context:
space:
mode:
authorTadas Tamošauskas <tadastoo@yahoo.com>2011-11-26 23:51:09 +0000
committerTadas Tamošauskas <tadastoo@yahoo.com>2011-11-26 23:51:09 +0000
commitebf69ab1636df74c76332c53bcd3d8494fb91b45 (patch)
tree6c6248d4871af14bb5adcc7447d589de4cf0d14b /activesupport/lib/active_support
parent4cdd44e3e0e22742a6e0ddc67c388cee0c8c13db (diff)
downloadrails-ebf69ab1636df74c76332c53bcd3d8494fb91b45.tar.gz
rails-ebf69ab1636df74c76332c53bcd3d8494fb91b45.tar.bz2
rails-ebf69ab1636df74c76332c53bcd3d8494fb91b45.zip
Object#in? also accepts multiple parameters
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r--activesupport/lib/active_support/core_ext/object/inclusion.rb24
1 files changed, 17 insertions, 7 deletions
diff --git a/activesupport/lib/active_support/core_ext/object/inclusion.rb b/activesupport/lib/active_support/core_ext/object/inclusion.rb
index b5671f66d0..f611cdd606 100644
--- a/activesupport/lib/active_support/core_ext/object/inclusion.rb
+++ b/activesupport/lib/active_support/core_ext/object/inclusion.rb
@@ -1,15 +1,25 @@
class Object
- # Returns true if this object is included in the argument. Argument must be
- # any object which responds to +#include?+. Usage:
+ # Returns true if this object is included in the argument(s). Argument must be
+ # any object which responds to +#include?+ or optionally, multiple arguments can be passed in. Usage:
#
# characters = ["Konata", "Kagami", "Tsukasa"]
# "Konata".in?(characters) # => true
+ #
+ # character = "Konata"
+ # character.in?("Konata", "Kagami", "Tsukasa") # => true
#
- # This will throw an ArgumentError if the argument doesn't respond
+ # This will throw an ArgumentError if a single argument is passed in and it doesn't respond
# to +#include?+.
- def in?(another_object)
- another_object.include?(self)
- rescue NoMethodError
- raise ArgumentError.new("The parameter passed to #in? must respond to #include?")
+ def in?(*args)
+ if args.length > 1
+ args.include? self
+ else
+ another_object = args.first
+ if another_object.respond_to? :include?
+ another_object.include? self
+ else
+ raise ArgumentError.new("The single parameter passed to #in? must respond to #include?")
+ end
+ end
end
end