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