ArrayInquirer to correctly find symbols or strings

The problem existed where if your ArrayInquirer values were
strings but you checked them using any? with a symbol, it would
not find the value. Now it will correctly check whether both
the String form or the Symbol form are included in the Array.

`
This commit is contained in:
Leigh Halliday 2015-08-28 16:00:48 -04:00
parent cbe7899f9d
commit 7abbe137b7
3 changed files with 22 additions and 11 deletions

View File

@ -1,13 +1,19 @@
* `number_to_currency` and `number_with_delimiter` now accept custom `delimiter_pattern` option
to handle placement of delimiter, to support currency formats like INR
Example:
* `ActiveSupport::ArrayInquirer` will now properly find your entry regardless of whether the array
values are of type String or type Symbol, and whether you are asking `any?` with a String or
a Symbol.
*Leigh Halliday*
* `number_to_currency` and `number_with_delimiter` now accept custom `delimiter_pattern` option
to handle placement of delimiter, to support currency formats like INR
Example:
number_to_currency(1230000, delimiter_pattern: /(\d+?)(?=(\d\d)+(\d)(?!\d))/, unit: '₹', format: "%u %n")
# => '₹ 12,30,000.00'
# => '₹ 12,30,000.00'
*Vipul A M*
* Deprecate `:prefix` option of `number_to_human_size` with no replacement.
*Jean Boussier*

View File

@ -23,7 +23,7 @@ module ActiveSupport
super
else
candidates.any? do |candidate|
include?(candidate) || include?(candidate.to_sym)
include?(candidate.to_sym) || include?(candidate.to_s)
end
end
end

View File

@ -3,7 +3,7 @@ require 'active_support/core_ext/array'
class ArrayInquirerTest < ActiveSupport::TestCase
def setup
@array_inquirer = ActiveSupport::ArrayInquirer.new([:mobile, :tablet])
@array_inquirer = ActiveSupport::ArrayInquirer.new([:mobile, :tablet, 'api'])
end
def test_individual
@ -18,6 +18,11 @@ class ArrayInquirerTest < ActiveSupport::TestCase
assert_not @array_inquirer.any?(:desktop, :watch)
end
def test_any_string_symbol_mismatch
assert @array_inquirer.any?('mobile')
assert @array_inquirer.any?(:api)
end
def test_any_with_block
assert @array_inquirer.any? { |v| v == :mobile }
assert_not @array_inquirer.any? { |v| v == :desktop }
@ -28,7 +33,7 @@ class ArrayInquirerTest < ActiveSupport::TestCase
end
def test_inquiry
result = [:mobile, :tablet].inquiry
result = [:mobile, :tablet, 'api'].inquiry
assert_instance_of ActiveSupport::ArrayInquirer, result
assert_equal @array_inquirer, result