module Stateful::Poro::ClassMethods
Public Class Methods
extended(klass)
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 10 def extended(klass) klass.define_stateful_variable_name_setter_method klass.define_stateful_variable_name_getter_method klass.define_next_state_method klass.define_transitions_method klass.define_initial_stateQ_method klass.define_final_stateQ_method end
Public Instance Methods
define_event_method(transition)
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 29 def define_event_method(transition) stateful_variable_name = self.instance_variable_get(:@stateful_variable_name) define_method(transition.event_name) do next_state_name = self.send(stateful_variable_name).next_state_name(transition.event_name) next_state = self.class.stateful_states.find(next_state_name) self.send("#{stateful_variable_name}=", next_state) end end
define_final_stateQ_method()
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 87 def define_final_stateQ_method stateful_variable_name = self.instance_variable_get(:@stateful_variable_name) define_method(:final_state?) do final_states.include?(self.send(stateful_variable_name)) end end
define_initial_stateQ_method()
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 80 def define_initial_stateQ_method stateful_variable_name = self.instance_variable_get(:@stateful_variable_name) define_method(:initial_state?) do self.send(stateful_variable_name) == initial_state end end
define_next_state_method()
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 65 def define_next_state_method stateful_variable_name = self.instance_variable_get(:@stateful_variable_name) define_method(:next_state) do |event_name| next_state_name = self.send(stateful_variable_name).next_state_name(event_name) all_states.find(next_state_name) end end
define_stateful_variable_name_getter_method()
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 52 def define_stateful_variable_name_getter_method stateful_variable_name = self.instance_variable_get(:@stateful_variable_name) define_method(stateful_variable_name) do if state = instance_variable_get("@#{stateful_variable_name}") state else initial_state = self.class.stateful_states.initial_state self.send("#{stateful_variable_name}=", initial_state.name) initial_state end end end
define_stateful_variable_name_setter_method()
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 45 def define_stateful_variable_name_setter_method stateful_variable_name = self.instance_variable_get(:@stateful_variable_name) define_method("#{stateful_variable_name}=") do |state| instance_variable_set("@#{stateful_variable_name}", self.class.stateful_states.find(state)) end end
define_status_predicate_method(state_name)
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 38 def define_status_predicate_method(state_name) stateful_variable_name = self.instance_variable_get(:@stateful_variable_name) define_method("#{state_name}?") do self.send(stateful_variable_name).name == state_name end end
define_transitions_method()
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 73 def define_transitions_method stateful_variable_name = self.instance_variable_get(:@stateful_variable_name) define_method(:transitions) do self.send(stateful_variable_name).transitions end end
stateful_variable_name()
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 25 def stateful_variable_name @stateful_variable_name end
stateful_variable_name=(stateful_variable_name)
click to toggle source
# File lib/Stateful/Poro/ClassMethods.rb, line 21 def stateful_variable_name=(stateful_variable_name) @stateful_variable_name = stateful_variable_name end