Class: Golem::DSL::StateMachineDef
- Inherits:
-
Object
- Object
- Golem::DSL::StateMachineDef
- Defined in:
- lib/golem/dsl/state_machine_def.rb
Instance Attribute Summary collapse
-
#machine_name ⇒ Object
readonly
Returns the value of attribute machine_name.
Instance Method Summary collapse
- #all_states ⇒ Object
- #initial_state(state) ⇒ Object
-
#initialize(klass, machine_name = nil, &block) ⇒ StateMachineDef
constructor
A new instance of StateMachineDef.
- #machine ⇒ Object
- #on_all_events(callback = nil, &block) ⇒ Object
- #on_all_transitions(callback = nil, &block) ⇒ Object
- #state(state_name, options = {}, &block) ⇒ Object
-
#state_attribute(attribute = nil) ⇒ Object
Sets or returns the state_attribute name.
-
#state_attribute=(attribute) ⇒ Object
Sets the state_attribute name.
-
#state_attribute_reader(reader = nil) ⇒ Object
Sets the state_attribute reader.
-
#state_attribute_writer(writer = nil) ⇒ Object
Sets the state_attribute writer.
Constructor Details
#initialize(klass, machine_name = nil, &block) ⇒ StateMachineDef
Returns a new instance of StateMachineDef.
12 13 14 15 16 |
# File 'lib/golem/dsl/state_machine_def.rb', line 12 def initialize(klass, machine_name = nil, &block) @klass = klass # this is the Class that we to endow with FSM behaviour @machine = Golem::Model::StateMachine.new(machine_name) instance_eval(&block) if block end |
Instance Attribute Details
#machine_name ⇒ Object (readonly)
Returns the value of attribute machine_name.
10 11 12 |
# File 'lib/golem/dsl/state_machine_def.rb', line 10 def machine_name @machine_name end |
Instance Method Details
#all_states ⇒ Object
26 27 28 |
# File 'lib/golem/dsl/state_machine_def.rb', line 26 def all_states @machine.all_states.collect{|state| StateDef.new(@machine, state.name)} end |
#initial_state(state) ⇒ Object
30 31 32 |
# File 'lib/golem/dsl/state_machine_def.rb', line 30 def initial_state(state) @machine.initial_state = @machine.get_or_define_state(state) end |
#machine ⇒ Object
18 19 20 |
# File 'lib/golem/dsl/state_machine_def.rb', line 18 def machine @machine end |
#on_all_events(callback = nil, &block) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/golem/dsl/state_machine_def.rb', line 70 def on_all_events(callback = nil, &block) raise Golem::DefinitionSyntaxError, "A callback or block must be given for on_all_events" unless (callback || block) raise Golem::DefinitionSyntaxError, "Either a callback or block, not both, must be given for on_all_events" if (callback && block) callback ||= block unless callback.kind_of?(Golem::Model::Callback) callback = Golem::Model::Callback.new(callback) end @machine.on_all_events = callback end |
#on_all_transitions(callback = nil, &block) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/golem/dsl/state_machine_def.rb', line 58 def on_all_transitions(callback = nil, &block) raise Golem::DefinitionSyntaxError, "A callback or block must be given for on_all_transitions" unless (callback || block) raise Golem::DefinitionSyntaxError, "Either a callback or block, not both, must be given for on_all_transitions" if (callback && block) callback ||= block unless callback.kind_of?(Golem::Model::Callback) callback = Golem::Model::Callback.new(callback) end @machine.on_all_transitions = callback end |
#state(state_name, options = {}, &block) ⇒ Object
22 23 24 |
# File 'lib/golem/dsl/state_machine_def.rb', line 22 def state(state_name, = {}, &block) Golem::DSL::StateDef.new(@machine, state_name, , &block) end |
#state_attribute(attribute = nil) ⇒ Object
Sets or returns the state_attribute name.
35 36 37 38 39 40 41 |
# File 'lib/golem/dsl/state_machine_def.rb', line 35 def state_attribute(attribute = nil) if attribute.nil? @state_attribute else @state_attribute = attribute end end |
#state_attribute=(attribute) ⇒ Object
Sets the state_attribute name.
44 45 46 |
# File 'lib/golem/dsl/state_machine_def.rb', line 44 def state_attribute=(attribute) @machine.state_attribute = attribute end |
#state_attribute_reader(reader = nil) ⇒ Object
Sets the state_attribute reader.
49 50 51 |
# File 'lib/golem/dsl/state_machine_def.rb', line 49 def state_attribute_reader(reader = nil) @machine.state_attribute_reader = reader end |
#state_attribute_writer(writer = nil) ⇒ Object
Sets the state_attribute writer.
54 55 56 |
# File 'lib/golem/dsl/state_machine_def.rb', line 54 def state_attribute_writer(writer = nil) @machine.state_attribute_writer = writer end |