Class: Jsm::Event
- Inherits:
-
Object
- Object
- Jsm::Event
- Defined in:
- lib/jsm/event.rb
Overview
Jsm::Event handle event related task registered by the main module. It do transition process from one state to another state
Instance Attribute Summary collapse
-
#attribute_name ⇒ Object
Returns the value of attribute attribute_name.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#states ⇒ Object
readonly
Returns the value of attribute states.
-
#transitions ⇒ Object
readonly
Returns the value of attribute transitions.
Instance Method Summary collapse
-
#can_be_executed?(object) ⇒ Boolean
method to check whether this event can be executed.
-
#can_be_transitioning_to(object) ⇒ Object
check when running this event, which transitions can change the state of object state return the transition object.
-
#execute(object) ⇒ Object
execute the event, and do a transition if the object current state match with the from state of a transition.
-
#initialize(name, params = {}, &block) ⇒ Event
constructor
A new instance of Event.
-
#transition(params = {}) ⇒ Object
register a transition into the.
Constructor Details
#initialize(name, params = {}, &block) ⇒ Event
Returns a new instance of Event.
8 9 10 11 12 13 |
# File 'lib/jsm/event.rb', line 8 def initialize(name, params = {}, &block) @name = name @states = params[:states] @transitions = [] instance_eval(&block) if block_given? end |
Instance Attribute Details
#attribute_name ⇒ Object
Returns the value of attribute attribute_name.
5 6 7 |
# File 'lib/jsm/event.rb', line 5 def attribute_name @attribute_name end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
4 5 6 |
# File 'lib/jsm/event.rb', line 4 def name @name end |
#states ⇒ Object (readonly)
Returns the value of attribute states.
4 5 6 |
# File 'lib/jsm/event.rb', line 4 def states @states end |
#transitions ⇒ Object (readonly)
Returns the value of attribute transitions.
4 5 6 |
# File 'lib/jsm/event.rb', line 4 def transitions @transitions end |
Instance Method Details
#can_be_executed?(object) ⇒ Boolean
method to check whether this event can be executed
48 49 50 51 |
# File 'lib/jsm/event.rb', line 48 def can_be_executed?(object) from_states = transitions.map(&:from).flatten from_states.include?(object.current_state) end |
#can_be_transitioning_to(object) ⇒ Object
check when running this event, which transitions can change the state of object state return the transition object
43 44 45 |
# File 'lib/jsm/event.rb', line 43 def can_be_transitioning_to(object) transitions.find{ |transition| transition.from.include?(obj_state(object)) } end |
#execute(object) ⇒ Object
execute the event, and do a transition if the object current state match with the from state of a transition
31 32 33 34 35 36 37 38 39 |
# File 'lib/jsm/event.rb', line 31 def execute(object) transition = can_be_transitioning_to(object) if transition change_state_obj(object, transition.to) true else false end end |
#transition(params = {}) ⇒ Object
register a transition into the. When Event is executed, these transitions is transitioning an object into to state, if their current state match with one of the from state. the argument input is params from and params to. Both params should be exist
20 21 22 23 24 25 26 |
# File 'lib/jsm/event.rb', line 20 def transition(params = {}) validate_params(params) validate_state_transition(params) from = params[:from].is_a?(Array) ? params[:from] : [params[:from]] transition = Jsm::Transition.new(from, params[:to]) @transitions.push(transition) end |