class RMachine::StateNotifierFactory
Attributes
message_args[R]
message_name[R]
object_called[R]
state_template[R]
Public Class Methods
new(params={})
click to toggle source
# File lib/r_machine/state_notifier_factory.rb, line 6 def initialize(params={}) @object_called = params[:object_called] @state_template = params[:state_template] @message_name = params[:message_name] @message_args = params[:message_args] end
Public Instance Methods
is_notifying_state_machine?()
click to toggle source
# File lib/r_machine/state_notifier_factory.rb, line 13 def is_notifying_state_machine? is_calling_state_attribute? || is_changing_state_attribute? || is_calling_an_event? end
notifier()
click to toggle source
# File lib/r_machine/state_notifier_factory.rb, line 19 def notifier if is_changing_state_attribute? build_change_state_value_notifier! elsif is_calling_state_attribute? build_retrieve_state_value_notifier! elsif is_calling_an_event? build_call_event_method_notifier! end end
Private Instance Methods
build_call_event_method_notifier!()
click to toggle source
# File lib/r_machine/state_notifier_factory.rb, line 31 def build_call_event_method_notifier! @call_event_method_notifier ||= CallEventMethodNotifier.new({ entity: object_called, state_template: state_template, method_to_call: message_name, message_args: message_args, change_state_value_notifier: build_change_state_value_notifier! }) end
build_change_state_value_notifier!()
click to toggle source
# File lib/r_machine/state_notifier_factory.rb, line 41 def build_change_state_value_notifier! @change_state_value_notifier ||= ChangeStateValueNotifier.new({ state_template: state_template, new_value: message_args.first }) end
build_retrieve_state_value_notifier!()
click to toggle source
# File lib/r_machine/state_notifier_factory.rb, line 48 def build_retrieve_state_value_notifier! @retrieve_state_value_notifier ||= RetrieveStateValueNotifier.new({ state_template: state_template }) end
is_calling_an_event?()
click to toggle source
# File lib/r_machine/state_notifier_factory.rb, line 60 def is_calling_an_event? !state_template.find_event(message_name).nil? end
is_calling_state_attribute?()
click to toggle source
# File lib/r_machine/state_notifier_factory.rb, line 52 def is_calling_state_attribute? message_name.to_s == state_template.state_field_name.to_s end
is_changing_state_attribute?()
click to toggle source
# File lib/r_machine/state_notifier_factory.rb, line 56 def is_changing_state_attribute? message_name.to_s == "#{state_template.state_field_name}=" end