Module: Praxis::Finalizable

Included in:
Blueprint
Defined in:
lib/praxis-blueprints/finalizable.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(klass) ⇒ Object



4
5
6
7
8
# File 'lib/praxis-blueprints/finalizable.rb', line 4

def self.extended(klass)
  klass.module_eval do
    @finalizable = Set.new
  end
end

Instance Method Details

#_finalize!Object



24
25
26
# File 'lib/praxis-blueprints/finalizable.rb', line 24

def _finalize!
  @finalized = true
end

#finalizableObject



16
17
18
# File 'lib/praxis-blueprints/finalizable.rb', line 16

def finalizable
  @finalizable
end

#finalize!Object



28
29
30
31
32
# File 'lib/praxis-blueprints/finalizable.rb', line 28

def finalize!
  finalizable.reject(&:finalized?).each(&:_finalize!)

  finalize! unless finalizable.all?(&:finalized?)
end

#finalized?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/praxis-blueprints/finalizable.rb', line 20

def finalized?
  @finalized
end

#inherited(base) ⇒ Object



10
11
12
13
14
# File 'lib/praxis-blueprints/finalizable.rb', line 10

def inherited(base)
  @finalizable << base
  base.instance_variable_set(:@finalizable, @finalizable)
  base.instance_variable_set(:@finalized, false)
end