class Hash

Public Instance Methods

recursive_symbolize_keys() click to toggle source

Return a new instance of Hash which represents the same data as self but with all keys - including those of sub-hashes - symbolized

# File lib/core-extensions/hash.rb, line 11
def recursive_symbolize_keys
  new_hash = {}
  self.each_pair do |k,v|
    new_hash[k.to_sym] = value_or_symbolize_value(v)
  end
  new_hash
end
recursive_symbolize_keys!() click to toggle source

Modify self in place, transforming all keys - including those of sub-hashes - in to symbols

# File lib/core-extensions/hash.rb, line 22
def recursive_symbolize_keys!
  items = {}
  self.each_pair do |k,v|
    value = delete(k)
    items[k] = value_or_symbolize_value(value)
  end
  items
end

Private Instance Methods

value_or_symbolize_value(value) click to toggle source

Symbolize any hash key or sub-hash key containing within value.

# File lib/core-extensions/hash.rb, line 34
def value_or_symbolize_value(value)
  if value.is_a? Hash
    return value.recursive_symbolize_keys
  elsif value.is_a? Array
    return value.map { |elem| value_or_symbolize_value(elem) }
  else
    return value
  end
end