1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Revert "Adds not_in? onto Object"

This commit is contained in:
David Heinemeier Hansson 2016-07-29 14:45:20 -07:00 committed by GitHub
parent 3916656f8e
commit afc9a82567
4 changed files with 0 additions and 81 deletions

View file

@ -1,15 +1,3 @@
* Introduce `not_in?` on `Object`.
As an opposite method for `in?`, `not_in?` provides equivalent support for exclusion. This turns this:
[1,2].exclude?(user_id)
...into this:
user_id.not_in?([1,2])
*Jon McCartie*
* Defines `Regexp.match?` for Ruby versions prior to 2.4. The predicate
has the same interface, but it does not have the performance boost. Its
purpose is to be able to write 2.4 compatible code.

View file

@ -4,7 +4,6 @@ require 'active_support/core_ext/object/duplicable'
require 'active_support/core_ext/object/deep_dup'
require 'active_support/core_ext/object/try'
require 'active_support/core_ext/object/inclusion'
require 'active_support/core_ext/object/exclusion'
require 'active_support/core_ext/object/conversions'
require 'active_support/core_ext/object/instance_variables'

View file

@ -1,15 +0,0 @@
class Object
# Returns true if this object is excluded in the argument. Argument must be
# any object which responds to +#include?+. Usage:
#
# characters = ["Konata", "Kagami", "Tsukasa"]
# "MoshiMoshi".not_in?(characters) # => true
#
# This will throw an +ArgumentError+ if the argument doesn't respond
# to +#include?+.
def not_in?(another_object)
!another_object.include?(self)
rescue NoMethodError
raise ArgumentError.new("The parameter passed to #not_in? must respond to #include?")
end
end

View file

@ -1,53 +0,0 @@
require 'abstract_unit'
require 'active_support/core_ext/object/exclusion'
class NotInTest < ActiveSupport::TestCase
def test_not_in_array
assert 1.not_in?([2, 3])
assert_not 2.not_in?([1,2])
end
def test_not_in_hash
h = { "a" => 100, "b" => 200 }
assert "z".not_in?(h)
assert_not "a".not_in?(h)
end
def test_not_in_string
assert "ol".not_in?("hello")
assert_not "lo".not_in?("hello")
assert ?z.not_in?("hello")
end
def test_not_in_range
assert 75.not_in?(1..50)
assert_not 25.not_in?(1..50)
end
def test_not_in_set
s = Set.new([1,2])
assert 3.not_in?(s)
assert_not 1.not_in?(s)
end
module A
end
class B
include A
end
class C < B
end
class D
end
def test_not_in_module
assert A.not_in?(D)
assert A.not_in?(A)
assert_not A.not_in?(B)
assert_not A.not_in?(C)
end
def test_no_method_catching
assert_raise(ArgumentError) { 1.not_in?(1) }
end
end