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

[](*args)
Alias for: call
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