Module: Coolio::SyncDefer

Defined in:
lib/cool.io/sync-defer.rb

Defined Under Namespace

Classes: Defer, DeferMulti, DeferOne

Class Method Summary collapse

Class Method Details

.defer(*args, &block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/cool.io/sync-defer.rb', line 7

def defer *args, &block
  loop  = args.find  { |a| a.kind_of?(Coolio::Loop) }||Coolio::Loop.default
  funcs = args.reject{ |a| a.kind_of?(Coolio::Loop) }
  funcs << block if block_given?
  if    funcs.empty?
    return
  elsif funcs.size == 1
    DeferOne.new(funcs.first, loop).result
  else
    DeferMulti.new(funcs, loop).result
  end
end