Match HashWithIndifferentAccess#default's behaviour with Hash#default
This commit is contained in:
parent
b4f28dbb39
commit
38a990237a
@ -1,3 +1,7 @@
|
||||
* Match `HashWithIndifferentAccess#default`'s behaviour with `Hash#default`
|
||||
|
||||
*David Cornu*
|
||||
|
||||
* Adds `:exception_object` key to `ActiveSupport::Notifications::Instrumenter` payload when an exception is raised.
|
||||
|
||||
Adds new key/value pair to payload when an exception is raised: e.g. `:exception_object => #<RuntimeError: FAIL>`.
|
||||
|
@ -68,12 +68,10 @@ def initialize(constructor = {})
|
||||
end
|
||||
end
|
||||
|
||||
def default(key = nil)
|
||||
if key.is_a?(Symbol) && include?(key = key.to_s)
|
||||
self[key]
|
||||
else
|
||||
super
|
||||
end
|
||||
def default(*args)
|
||||
key = args.first
|
||||
args[0] = key.to_s if key.is_a?(Symbol)
|
||||
super(*args)
|
||||
end
|
||||
|
||||
def self.new_from_hash_copying_default(hash)
|
||||
@ -159,6 +157,20 @@ def key?(key)
|
||||
alias_method :has_key?, :key?
|
||||
alias_method :member?, :key?
|
||||
|
||||
|
||||
# Same as <tt>Hash#[]</tt> where the key passed as argument can be
|
||||
# either a string or a symbol:
|
||||
#
|
||||
# counters = ActiveSupport::HashWithIndifferentAccess.new
|
||||
# counters[:foo] = 1
|
||||
#
|
||||
# counters['foo'] # => 1
|
||||
# counters[:foo] # => 1
|
||||
# counters[:zoo] # => nil
|
||||
def [](key)
|
||||
super(convert_key(key))
|
||||
end
|
||||
|
||||
# Same as <tt>Hash#fetch</tt> where the key passed as argument can be
|
||||
# either a string or a symbol:
|
||||
#
|
||||
|
@ -1587,9 +1587,9 @@ def test_should_use_default_proc_for_unknown_key
|
||||
assert_equal 3, hash_wia[:new_key]
|
||||
end
|
||||
|
||||
def test_should_use_default_proc_if_no_key_is_supplied
|
||||
def test_should_return_nil_if_no_key_is_supplied
|
||||
hash_wia = HashWithIndifferentAccess.new { 1 + 2 }
|
||||
assert_equal 3, hash_wia.default
|
||||
assert_equal nil, hash_wia.default
|
||||
end
|
||||
|
||||
def test_should_use_default_value_for_unknown_key
|
||||
|
Loading…
Reference in New Issue
Block a user