mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Object#in? also accepts multiple parameters
This commit is contained in:
parent
4cdd44e3e0
commit
ebf69ab163
2 changed files with 27 additions and 7 deletions
|
@ -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
|
||||
|
|
|
@ -2,6 +2,16 @@ require 'abstract_unit'
|
|||
require 'active_support/core_ext/object/inclusion'
|
||||
|
||||
class InTest < Test::Unit::TestCase
|
||||
def test_in_multiple_args
|
||||
assert :b.in?(:a,:b)
|
||||
assert !:c.in?(:a,:b)
|
||||
end
|
||||
|
||||
def test_in_multiple_arrays
|
||||
assert [1,2].in?([1,2],[2,3])
|
||||
assert ![1,2].in?([1,3],[2,1])
|
||||
end
|
||||
|
||||
def test_in_array
|
||||
assert 1.in?([1,2])
|
||||
assert !3.in?([1,2])
|
||||
|
|
Loading…
Reference in a new issue