Class: Igniter::Extensions::Contracts::Reactive::Plan
- Inherits:
-
Object
- Object
- Igniter::Extensions::Contracts::Reactive::Plan
- Defined in:
- lib/igniter/extensions/contracts/reactive/plan.rb
Instance Attribute Summary collapse
-
#subscriptions ⇒ Object
readonly
Returns the value of attribute subscriptions.
Instance Method Summary collapse
- #effect(path, &block) ⇒ Object
-
#initialize(subscriptions:) ⇒ Plan
constructor
A new instance of Plan.
- #on_exit(&block) ⇒ Object
- #on_failure(&block) ⇒ Object
- #on_success(path = nil, &block) ⇒ Object
- #react_to(event_type, path: nil, once_per_dispatch: false, &block) ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(subscriptions:) ⇒ Plan
Returns a new instance of Plan.
10 11 12 13 |
# File 'lib/igniter/extensions/contracts/reactive/plan.rb', line 10 def initialize(subscriptions:) @subscriptions = subscriptions.freeze freeze end |
Instance Attribute Details
#subscriptions ⇒ Object (readonly)
Returns the value of attribute subscriptions.
8 9 10 |
# File 'lib/igniter/extensions/contracts/reactive/plan.rb', line 8 def subscriptions @subscriptions end |
Instance Method Details
#effect(path, &block) ⇒ Object
26 27 28 |
# File 'lib/igniter/extensions/contracts/reactive/plan.rb', line 26 def effect(path, &block) react_to(:output_produced, path: path, &block) end |
#on_exit(&block) ⇒ Object
39 40 41 |
# File 'lib/igniter/extensions/contracts/reactive/plan.rb', line 39 def on_exit(&block) react_to(:execution_exited, once_per_dispatch: true, &block) end |
#on_failure(&block) ⇒ Object
35 36 37 |
# File 'lib/igniter/extensions/contracts/reactive/plan.rb', line 35 def on_failure(&block) react_to(:execution_failed, once_per_dispatch: true, &block) end |
#on_success(path = nil, &block) ⇒ Object
30 31 32 33 |
# File 'lib/igniter/extensions/contracts/reactive/plan.rb', line 30 def on_success(path = nil, &block) event_type = path.nil? ? :execution_succeeded : :output_produced react_to(event_type, path: path, once_per_dispatch: true, &block) end |
#react_to(event_type, path: nil, once_per_dispatch: false, &block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/igniter/extensions/contracts/reactive/plan.rb', line 15 def react_to(event_type, path: nil, once_per_dispatch: false, &block) with_subscription( Subscription.new( event_type: event_type, path: path, action: block, once_per_dispatch: once_per_dispatch ) ) end |
#to_h ⇒ Object
43 44 45 46 47 |
# File 'lib/igniter/extensions/contracts/reactive/plan.rb', line 43 def to_h { subscriptions: subscriptions.map(&:to_h) } end |