Class: Mayu::Utils::DeepFreezer

Inherits:
Object
  • Object
show all
Extended by:
T::Generic, T::Sig
Defined in:
lib/mayu/utils.rb

Constant Summary collapse

Elem =
type_member { { upper: Object } }

Instance Method Summary collapse

Constructor Details

#initialize(obj) ⇒ DeepFreezer

Returns a new instance of DeepFreezer.



48
# File 'lib/mayu/utils.rb', line 48

def initialize(obj) = @obj = obj

Instance Method Details

#deep_freezeObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/mayu/utils.rb', line 51

def deep_freeze
  case @obj
  when Hash
    @obj.freeze
    T.cast(
      @obj
        .transform_keys { Utils.deep_freeze(_1) }
        .transform_values { Utils.deep_freeze(_1) },
      Elem
    )
  when Array
    T.cast(@obj.map(&:freeze), Elem)
  else
    @obj.freeze
  end
end