Class: Object

Inherits:
BasicObject
Defined in:
lib/fully_freeze/object.rb

Overview

Add fully_freeze support to the object class.

Instance Method Summary collapse

Instance Method Details

#fully_freeze(progress = {}) ⇒ Object

Do fully_freeze the object.



7
8
9
10
11
12
13
14
15
16
# File 'lib/fully_freeze/object.rb', line 7

def fully_freeze(progress={})
  progress[object_id] = freeze

  instance_variables.each do |name|
    value = instance_variable_get(name)
    value.fully_freeze(progress) unless progress[value.object_id]
  end

  self
end

#fully_frozen?(progress = {}) ⇒ Boolean

Is this object fully_frozen?

Returns:

  • (Boolean)


19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/fully_freeze/object.rb', line 19

def fully_frozen?(progress={})
  return false unless frozen?

  progress[object_id] = self

  instance_variables.each do |name|
    value = instance_variable_get(name)
    return false unless progress[value.object_id] || value.fully_frozen?(progress)
  end

  true
end