class Transflow::Publisher
Attributes
name[R]
op[R]
Public Class Methods
[](name, op, options = {})
click to toggle source
# File lib/transflow/publisher.rb, line 14 def self.[](name, op, options = {}) type = if options[:monadic] Monadic else self end type.new(name, op) end
new(name, op)
click to toggle source
# File lib/transflow/publisher.rb, line 60 def initialize(name, op) @name = name @op = op end
Public Instance Methods
arity()
click to toggle source
# File lib/transflow/publisher.rb, line 70 def arity op.is_a?(Proc) ? op.arity : op.method(:call).arity end
call(*args)
click to toggle source
# File lib/transflow/publisher.rb, line 74 def call(*args) result = op.call(*args) broadcast_success(result) result rescue StepError => err broadcast_failure(*args, err) and raise(err) end
Also aliased as: []
curry()
click to toggle source
# File lib/transflow/publisher.rb, line 65 def curry raise "can't curry publisher where operation arity is < 0" if arity < 0 Curried.new(self) end
subscribe(listeners, *args)
click to toggle source
Calls superclass method
# File lib/transflow/publisher.rb, line 83 def subscribe(listeners, *args) Array(listeners).each { |listener| super(listener, *args) } end
Private Instance Methods
broadcast_failure(*args, err)
click to toggle source
# File lib/transflow/publisher.rb, line 93 def broadcast_failure(*args, err) broadcast(:"#{name}_failure", *args, err) end
broadcast_success(result)
click to toggle source
# File lib/transflow/publisher.rb, line 89 def broadcast_success(result) broadcast(:"#{name}_success", result) end