Module: Oselvar::Var::Core::DeepFreeze

Defined in:
lib/oselvar/var/core/deep_freeze.rb

Overview

Recursively freeze plain Hash/Array so handler code mutating state raises FrozenError. Other objects (class instances, primitives, nil) pass through. Assumes acyclic input. Port of deep-freeze.ts.

Class Method Summary collapse

Class Method Details

.deep_freeze(value) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/oselvar/var/core/deep_freeze.rb', line 12

def deep_freeze(value)
  case value
  when Hash
    value.each_value { |v| deep_freeze(v) }
    value.freeze
  when Array
    value.each { |v| deep_freeze(v) }
    value.freeze
  else
    value
  end
end