mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #10394 from BMorearty/remove-varargs-from-in
Remove varargs from `Object#in?`
This commit is contained in:
commit
f7f8b7ccfc
3 changed files with 10 additions and 31 deletions
|
@ -1,25 +1,15 @@
|
||||||
class Object
|
class Object
|
||||||
# Returns true if this object is included in the argument(s). Argument must be
|
# Returns true if this object is included in the argument. Argument must be
|
||||||
# any object which responds to +#include?+ or optionally, multiple arguments can be passed in. Usage:
|
# any object which responds to +#include?+. Usage:
|
||||||
#
|
#
|
||||||
# characters = ['Konata', 'Kagami', 'Tsukasa']
|
# characters = ["Konata", "Kagami", "Tsukasa"]
|
||||||
# 'Konata'.in?(characters) # => true
|
# "Konata".in?(characters) # => true
|
||||||
#
|
#
|
||||||
# character = 'Konata'
|
# This will throw an ArgumentError if the argument doesn't respond
|
||||||
# character.in?('Konata', 'Kagami', 'Tsukasa') # => true
|
|
||||||
#
|
|
||||||
# This will throw an ArgumentError if a single argument is passed in and it doesn't respond
|
|
||||||
# to +#include?+.
|
# to +#include?+.
|
||||||
def in?(*args)
|
def in?(another_object)
|
||||||
if args.length > 1
|
another_object.include?(self)
|
||||||
args.include? self
|
rescue NoMethodError
|
||||||
else
|
raise ArgumentError.new("The parameter passed to #in? must respond to #include?")
|
||||||
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
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,16 +2,6 @@ require 'abstract_unit'
|
||||||
require 'active_support/core_ext/object/inclusion'
|
require 'active_support/core_ext/object/inclusion'
|
||||||
|
|
||||||
class InTest < ActiveSupport::TestCase
|
class InTest < ActiveSupport::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
|
def test_in_array
|
||||||
assert 1.in?([1,2])
|
assert 1.in?([1,2])
|
||||||
assert !3.in?([1,2])
|
assert !3.in?([1,2])
|
||||||
|
|
|
@ -476,12 +476,11 @@ NOTE: Defined in `active_support/core_ext/kernel/reporting.rb`.
|
||||||
|
|
||||||
### `in?`
|
### `in?`
|
||||||
|
|
||||||
The predicate `in?` tests if an object is included in another object or a list of objects. An `ArgumentError` exception will be raised if a single argument is passed and it does not respond to `include?`.
|
The predicate `in?` tests if an object is included in another object. An `ArgumentError` exception will be raised if the argument passed does not respond to `include?`.
|
||||||
|
|
||||||
Examples of `in?`:
|
Examples of `in?`:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
1.in?(1,2) # => true
|
|
||||||
1.in?([1,2]) # => true
|
1.in?([1,2]) # => true
|
||||||
"lo".in?("hello") # => true
|
"lo".in?("hello") # => true
|
||||||
25.in?(30..50) # => false
|
25.in?(30..50) # => false
|
||||||
|
|
Loading…
Reference in a new issue