class FiniteMachine::Definition
A class responsible for defining standalone state machine
Public Class Methods
add_deferred(deferred)
click to toggle source
Add deferred
@param [Proc] deferred
the deferred execution
@return [Array]
@api private
# File lib/finite_machine/definition.rb, line 23 def self.add_deferred(deferred) deferreds << deferred end
deferreds()
click to toggle source
The machine deferreds
@return [Array]
@api private
# File lib/finite_machine/definition.rb, line 11 def self.deferreds @deferreds ||= [] end
inherited(subclass)
click to toggle source
Set deferrerd methods on the subclass
@api private
Calls superclass method
# File lib/finite_machine/definition.rb, line 49 def self.inherited(subclass) super deferreds.each { |d| subclass.add_deferred(d) } end
method_missing(method_name, *arguments, &block)
click to toggle source
Delay lookup of DSL
method
@param [Symbol] method_name
@return [nil]
@api private
# File lib/finite_machine/definition.rb, line 62 def self.method_missing(method_name, *arguments, &block) deferred = proc do |name, args, blok, object| object.send(name, *args, &blok) end deferred = deferred.curry(4)[method_name][arguments][block] add_deferred(deferred) end
new(*args)
click to toggle source
Instantiate a new Definition
@example
class Engine < FiniteMachine::Definition ... end engine = Engine.new
@return [FiniteMachine::StateMachine]
@api public
# File lib/finite_machine/definition.rb, line 39 def self.new(*args) context = self FiniteMachine.new(*args) do context.deferreds.each { |d| d.call(self) } end end