Class: Workflow::Event
- Inherits:
-
Object
- Object
- Workflow::Event
- Defined in:
- lib/workflow/event.rb
Instance Attribute Summary collapse
-
#action ⇒ Object
Returns the value of attribute action.
-
#condition ⇒ Object
Returns the value of attribute condition.
-
#meta ⇒ Object
Returns the value of attribute meta.
-
#name ⇒ Object
Returns the value of attribute name.
-
#transitions_to ⇒ Object
Returns the value of attribute transitions_to.
Instance Method Summary collapse
- #condition_applicable?(object, event_arguments) ⇒ Boolean
- #draw(graph, from_state) ⇒ Object
-
#initialize(name, transitions_to, condition = nil, meta = {}, &action) ⇒ Event
constructor
A new instance of Event.
- #to_s ⇒ Object
Constructor Details
#initialize(name, transitions_to, condition = nil, meta = {}, &action) ⇒ Event
Returns a new instance of Event.
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/workflow/event.rb', line 6 def initialize(name, transitions_to, condition = nil, = {}, &action) @name = name @transitions_to = transitions_to.to_sym @meta = @action = action @condition = if condition.nil? || condition.is_a?(Symbol) || condition.respond_to?(:call) condition else raise TypeError, 'condition must be nil, an instance method name symbol or a callable (eg. a proc or lambda)' end end |
Instance Attribute Details
#action ⇒ Object
Returns the value of attribute action.
4 5 6 |
# File 'lib/workflow/event.rb', line 4 def action @action end |
#condition ⇒ Object
Returns the value of attribute condition.
4 5 6 |
# File 'lib/workflow/event.rb', line 4 def condition @condition end |
#meta ⇒ Object
Returns the value of attribute meta.
4 5 6 |
# File 'lib/workflow/event.rb', line 4 def @meta end |
#name ⇒ Object
Returns the value of attribute name.
4 5 6 |
# File 'lib/workflow/event.rb', line 4 def name @name end |
#transitions_to ⇒ Object
Returns the value of attribute transitions_to.
4 5 6 |
# File 'lib/workflow/event.rb', line 4 def transitions_to @transitions_to end |
Instance Method Details
#condition_applicable?(object, event_arguments) ⇒ Boolean
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/workflow/event.rb', line 18 def condition_applicable?(object, event_arguments) if condition if condition.is_a?(Symbol) m = object.method(condition) # Conditionals can now take the arguments of the trasition action into account #227 # But in case the current conditional wants to ignore any event_argument on its decision - # does not accept parameters, also support that. if m.arity == 0 # no additional parameters accepted object.send(condition) else object.send(condition, *event_arguments) end else # since blocks can ignore extra arguments without raising an error in Ruby, # no `if` is needed - compare with `arity` switch in above methods handling condition.call(object, *event_arguments) end else true end end |
#draw(graph, from_state) ⇒ Object
40 41 42 |
# File 'lib/workflow/event.rb', line 40 def draw(graph, from_state) graph.add_edges(from_state.name.to_s, transitions_to.to_s, .merge(:label => to_s)) end |
#to_s ⇒ Object
44 45 46 |
# File 'lib/workflow/event.rb', line 44 def to_s @name.to_s end |