From b025025b137e9c0755dacb215bd030740ff0de79 Mon Sep 17 00:00:00 2001 From: Yogesh Khater Date: Sat, 6 Jun 2020 21:38:58 +0530 Subject: [PATCH] Small amendments for Hash#merge with IndifferentAccess 1. Use `indifferent_writer` in `convert!` so that when `indifferent_writer`, `convert_key` or `indifferent_value` is overridden in included class, `merge` can use those. 2. `convert!` was calling twice if `other` hash was lacking indifference. `IndifferentAccess.inject!` already does conversion. --- lib/hashie/extensions/indifferent_access.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/hashie/extensions/indifferent_access.rb b/lib/hashie/extensions/indifferent_access.rb index e3d2d633..f8176f5f 100644 --- a/lib/hashie/extensions/indifferent_access.rb +++ b/lib/hashie/extensions/indifferent_access.rb @@ -74,7 +74,7 @@ def convert_key(key) # is injecting itself into member hashes. def convert! keys.each do |k| # rubocop:disable Performance/HashEachMethods - regular_writer convert_key(k), indifferent_value(regular_delete(k)) + indifferent_writer k, regular_delete(k) end self end @@ -133,7 +133,7 @@ def indifferent_replace(other_hash) def merge(*args) result = super - IndifferentAccess.inject!(result) if hash_lacking_indifference?(result) + return IndifferentAccess.inject!(result) if hash_lacking_indifference?(result) result.convert! end