class Hash

Public Instance Methods

compact() click to toggle source

Intuitive, see the source.

# File lib/tengine/support/core_ext/hash/compact.rb, line 11
def compact
  dup.tap {|i| i.compact! }
end
compact!() click to toggle source

Destructive elimination of nil, like Array#compact!

# File lib/tengine/support/core_ext/hash/compact.rb, line 4
def compact!
  reject! do |k, v|
    v.nil?
  end
end
deep_dup() click to toggle source

Returns a deep copy of hash.

# File lib/tengine/support/core_ext/hash/deep_dup.rb, line 15
def deep_dup
  duplicate = self.dup
  duplicate.each_pair do |k,v|
    tv = duplicate[k]
    duplicate[k] = tv.respond_to?(:deep_dup) && v.respond_to?(:deep_dup) ? tv.deep_dup : v
  end
  duplicate
end
deep_stringify_keys() click to toggle source

Return a new hash with all keys converted to strings recursively.

# File lib/tengine/support/core_ext/hash/keys.rb, line 7
def deep_stringify_keys
  deep_dup.deep_stringify_keys!
end
deep_stringify_keys!() click to toggle source

Destructively convert all keys to strings recursively.

# File lib/tengine/support/core_ext/hash/keys.rb, line 12
def deep_stringify_keys!
  stringify_keys! # active_support/core_ext/hash/keysのメソッドをそのまま使う
  values.each do |value|
    if value.respond_to?(:deep_stringify_keys!)
      value.deep_stringify_keys!
    elsif value.respond_to?(:each)
      value.each{|v| v.deep_stringify_keys! if v.respond_to?(:deep_stringify_keys!)}
    end
  end
  self
end
deep_symbolize_keys() click to toggle source

Return a new hash with all keys converted to symbols recursively, as long as they respond to to_sym.

# File lib/tengine/support/core_ext/hash/keys.rb, line 26
def deep_symbolize_keys
  deep_dup.deep_symbolize_keys!
end
deep_symbolize_keys!() click to toggle source

Destructively convert all keys to symbols recursively, as long as they respond to to_sym.

# File lib/tengine/support/core_ext/hash/keys.rb, line 32
def deep_symbolize_keys!
  symbolize_keys! # active_support/core_ext/hash/keysのメソッドをそのまま使う
  values.each do |value|
    if value.respond_to?(:deep_symbolize_keys!)
      value.deep_symbolize_keys!
    elsif value.respond_to?(:each)
      value.each{|v| v.deep_symbolize_keys! if v.respond_to?(:deep_symbolize_keys!)}
    end
  end
  self
end