Module: Stateful::Poro::ClassMethods
- Defined in:
- lib/Stateful/Poro/ClassMethods.rb
Class Method Summary collapse
Instance Method Summary collapse
- #define_stateful_attribute_getter_method(machine_name: nil) ⇒ Object
- #define_stateful_attribute_setter_method(machine_name: nil) ⇒ Object
- #stateful_attribute_name_for_machine(machine_name = nil) ⇒ Object
- #stateful_variable_name ⇒ Object
-
#stateful_variable_name=(stateful_variable_name) ⇒ Object
class << self.
Class Method Details
.extended(klass) ⇒ Object
8 9 10 11 12 13 14 15 |
# File 'lib/Stateful/Poro/ClassMethods.rb', line 8 def extended(klass) klass.define_stateful_attribute_setter_method klass.define_stateful_attribute_getter_method klass.define_next_state_method klass.define_transitions_method klass.define_initial_stateQ_method klass.define_final_stateQ_method end |
Instance Method Details
#define_stateful_attribute_getter_method(machine_name: nil) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/Stateful/Poro/ClassMethods.rb', line 41 def define_stateful_attribute_getter_method(machine_name: nil) attribute_name = stateful_attribute_name_for_machine(machine_name) define_method(attribute_name) do if state = instance_variable_get("@#{attribute_name}") state else initial_state = self.class.stateful_state_machine(machine_name).initial_state self.send("#{attribute_name}=", initial_state.name) initial_state end end end |
#define_stateful_attribute_setter_method(machine_name: nil) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/Stateful/Poro/ClassMethods.rb', line 34 def define_stateful_attribute_setter_method(machine_name: nil) attribute_name = stateful_attribute_name_for_machine(machine_name) define_method("#{attribute_name}=") do |state| instance_variable_set("@#{attribute_name}", self.class.stateful_state_machine(machine_name).find(state)) end end |
#stateful_attribute_name_for_machine(machine_name = nil) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/Stateful/Poro/ClassMethods.rb', line 26 def stateful_attribute_name_for_machine(machine_name = nil) if machine_name "#{machine_name}_state" else instance_variable_get(:@stateful_variable_name) end end |
#stateful_variable_name ⇒ Object
22 23 24 |
# File 'lib/Stateful/Poro/ClassMethods.rb', line 22 def stateful_variable_name @stateful_variable_name end |
#stateful_variable_name=(stateful_variable_name) ⇒ Object
class << self
18 19 20 |
# File 'lib/Stateful/Poro/ClassMethods.rb', line 18 def stateful_variable_name=(stateful_variable_name) @stateful_variable_name = stateful_variable_name end |