Method: CF::UAA::Util.hash_keys!

Defined in:
lib/uaa/util.rb

.hash_keys!(obj, style = nil) ⇒ Object

Modifies obj in place changing any hash keys to style. Recursively modifies subordinate hashes.

Parameters:

  • style (Symbol) (defaults to: nil)

    can be sym, downsym, down, str, [un]dash, [un]camel, nil, none

Returns:

  • modified obj



73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/uaa/util.rb', line 73

def self.hash_keys!(obj, style = nil)
  return obj if style == :none
  return obj.each {|o| hash_keys!(o, style)} if obj.is_a? Array
  return obj unless obj.is_a? Hash
  newkeys, nk = {}, nil
  obj.delete_if { |k, v|
    hash_keys!(v, style)
    newkeys[nk] = v unless (nk = hash_key(k, style)) == k
    nk != k
  }
  obj.merge!(newkeys)
end