From b5c35023bd422c62973d003378b7185dfe221919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Mon, 30 Mar 2015 13:38:13 -0300 Subject: [PATCH] Revert "Remove Array#inquiry" This reverts commit 9420de59f5b7f5ceac77e28e6c326ec145f71f80. Reason: Turns out we want to keep this method. --- activesupport/CHANGELOG.md | 5 ++++- .../lib/active_support/core_ext/array.rb | 1 + .../lib/active_support/core_ext/array/inquiry.rb | 15 +++++++++++++++ activesupport/test/array_inquirer_test.rb | 7 +++++++ 4 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 activesupport/lib/active_support/core_ext/array/inquiry.rb diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 50045a8c17..7eaad6340f 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,4 +1,4 @@ -* Added `ActiveSupport::ArrayInquirer`. +* Added `ActiveSupport::ArrayInquirer` and `Array#inquiry`. Wrapping an array in an `ArrayInquirer` gives a friendlier way to check its contents: @@ -13,6 +13,9 @@ variants.any?(:phone, :desktop) # => true variants.any?(:desktop, :watch) # => false + `Array#inquiry` is a shortcut for wrapping the receiving array in an + `ArrayInquirer`. + *George Claghorn* * Deprecate `alias_method_chain` in favour of `Module#prepend` introduced in Ruby 2.0 diff --git a/activesupport/lib/active_support/core_ext/array.rb b/activesupport/lib/active_support/core_ext/array.rb index 7d0c1e4c8d..7551551bd7 100644 --- a/activesupport/lib/active_support/core_ext/array.rb +++ b/activesupport/lib/active_support/core_ext/array.rb @@ -4,3 +4,4 @@ require 'active_support/core_ext/array/extract_options' require 'active_support/core_ext/array/grouping' require 'active_support/core_ext/array/prepend_and_append' +require 'active_support/core_ext/array/inquiry' diff --git a/activesupport/lib/active_support/core_ext/array/inquiry.rb b/activesupport/lib/active_support/core_ext/array/inquiry.rb new file mode 100644 index 0000000000..de623c466c --- /dev/null +++ b/activesupport/lib/active_support/core_ext/array/inquiry.rb @@ -0,0 +1,15 @@ +class Array + # Wraps the array in an +ArrayInquirer+ object, which gives a friendlier way + # to check its string-like contents. + # + # pets = [:cat, :dog].inquiry + # + # pets.cat? # => true + # pets.ferret? # => false + # + # pets.any?(:cat, :ferret) # => true + # pets.any?(:ferret, :alligator) # => false + def inquiry + ActiveSupport::ArrayInquirer.new(self) + end +end diff --git a/activesupport/test/array_inquirer_test.rb b/activesupport/test/array_inquirer_test.rb index 97adea85e6..488e0d34a9 100644 --- a/activesupport/test/array_inquirer_test.rb +++ b/activesupport/test/array_inquirer_test.rb @@ -25,4 +25,11 @@ def test_any_with_block def test_respond_to assert_respond_to @array_inquirer, :development? end + + def test_inquiry + result = [:mobile, :tablet].inquiry + + assert_instance_of ActiveSupport::ArrayInquirer, result + assert_equal @array_inquirer, result + end end -- GitLab