class ActionFlow::DSL

Public Class Methods

new(flow_register, &block) click to toggle source
# File lib/action_flow.rb, line 28
def initialize(flow_register, &block)
  @flow_register = flow_register
  instance_eval(&block)
end

Public Instance Methods

flow(name, *expressions) click to toggle source
# File lib/action_flow.rb, line 33
def flow(name, *expressions)
  @flow_register.flows[name.to_sym] = Flow.new(expressions)
end
mutex(*names) click to toggle source
# File lib/action_flow.rb, line 37
def mutex(*names)
  names.each do |name|
    next unless flow = @flow_register.flows[name]
    flow.mutexes = names - [name]
  end
end
terminate(*args) click to toggle source
# File lib/action_flow.rb, line 44
def terminate(*args)
  expression_options = args.pop

  unless expression_options.respond_to?(:[]) && expression = expression_options[:on]
    raise ArgumentError, 'Could not find :on => expression in terminate'
  end

  args.each do |arg|
    flow_name = arg.to_sym
    next unless @flow_register.flows[flow_name]
    @flow_register.flows[flow_name].terminators << expression
  end
end