module Hash::DeepFreezable

Public Instance Methods

deep_freeze() click to toggle source
# File lib/hash_ext/deep_freezable.rb, line 4
def deep_freeze
  each_value { |v| deep_freeze_value v }
  freeze
end

Private Instance Methods

deep_freeze_value(value) click to toggle source
# File lib/hash_ext/deep_freezable.rb, line 9
def deep_freeze_value(value)
  if value.respond_to? :deep_freeze
    value.deep_freeze
  else
    if value.is_a? Hash
      value.each_value { |v| deep_freeze_value v }
    elsif value.respond_to? :each
      value.each { |v| deep_freeze_value v }
    end
    value.freeze
  end
end