Class: Emit::Alternation
- Inherits:
-
Object
- Object
- Emit::Alternation
- Defined in:
- lib/emit/alternation.rb
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(guards) ⇒ Alternation
constructor
A new instance of Alternation.
Constructor Details
#initialize(guards) ⇒ Alternation
Returns a new instance of Alternation.
3 4 5 6 7 8 9 10 11 12 |
# File 'lib/emit/alternation.rb', line 3 def initialize(guards) @guards = guards.map do |guard| case guard when InputGuard then guard when OutputGuard then guard else InputGuard.new(guard) end end end |
Instance Method Details
#execute ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/emit/alternation.rb', line 14 def execute idx, request, channel, operation = choose if @guards[idx] action = @guards[idx].action fail "Failed executing action in alternation." unless [Proc, Method].include?(action.class) case operation when :write then action.() when :read then action.(request.) end end [channel, request.] end |