From afc9a8256741bfd7a3ff5c5d60b9135dace80f29 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 29 Jul 2016 14:45:20 -0700 Subject: [PATCH] Revert "Adds `not_in?` onto Object" --- activesupport/CHANGELOG.md | 12 ----- .../lib/active_support/core_ext/object.rb | 1 - .../core_ext/object/exclusion.rb | 15 ------ .../test/core_ext/object/exclusion_test.rb | 53 ------------------- 4 files changed, 81 deletions(-) delete mode 100644 activesupport/lib/active_support/core_ext/object/exclusion.rb delete mode 100644 activesupport/test/core_ext/object/exclusion_test.rb diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index b39ef7bfb9..280620df1c 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -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. diff --git a/activesupport/lib/active_support/core_ext/object.rb b/activesupport/lib/active_support/core_ext/object.rb index a2c5a472f5..f4f9152d6a 100644 --- a/activesupport/lib/active_support/core_ext/object.rb +++ b/activesupport/lib/active_support/core_ext/object.rb @@ -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' diff --git a/activesupport/lib/active_support/core_ext/object/exclusion.rb b/activesupport/lib/active_support/core_ext/object/exclusion.rb deleted file mode 100644 index 58dfb649e5..0000000000 --- a/activesupport/lib/active_support/core_ext/object/exclusion.rb +++ /dev/null @@ -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 \ No newline at end of file diff --git a/activesupport/test/core_ext/object/exclusion_test.rb b/activesupport/test/core_ext/object/exclusion_test.rb deleted file mode 100644 index 487c97d255..0000000000 --- a/activesupport/test/core_ext/object/exclusion_test.rb +++ /dev/null @@ -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