Method: Hash.deep_indifferent_case_insensitive_access

Defined in:
lib/scimitar/support/hash_with_indifferent_case_insensitive_access.rb

.deep_indifferent_case_insensitive_access(object) ⇒ Object

Supports #with_indifferent_case_insensitive_access. Converts the given item to indifferent, case-insensitive access as a Hash; or converts Array items if given an Array; or returns the given object.

Hashes and Arrays at all depths are duplicated as a result.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/scimitar/support/hash_with_indifferent_case_insensitive_access.rb', line 24

def self.deep_indifferent_case_insensitive_access(object)
  if object.is_a?(Hash)
    new_hash = Scimitar::Support::HashWithIndifferentCaseInsensitiveAccess.new
    object.each do | key, value |
      new_hash[key] = deep_indifferent_case_insensitive_access(value)
    end
    new_hash

  elsif object.is_a?(Array)
    object.map do | array_entry |
      deep_indifferent_case_insensitive_access(array_entry)
    end

  else
    object

  end
end