Module: Eventador

Included in:
Proc
Defined in:
lib/eventador.rb,
lib/eventador/version.rb

Defined Under Namespace

Classes: Callback

Constant Summary collapse

VERSION =
'1.0.1'

Instance Method Summary collapse

Instance Method Details

#callback(callable, *rest) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/eventador.rb', line 14

def callback(callable, *rest)
  @callbacks ||= ::Hash.new do |h, method_name|
    h[method_name] = Class.new(Callback) do
      define_method(method_name) do |&block|
        @result = block.nil? ? true : block.call(*args)
      end
      define_method("#{method_name}?") { true }
      define_method(:to_s) { "Callback(#{method_name})" }
    end
  end
  ret = @callbacks[callable].new(rest)
  call(ret)
  ret.result
end