Sha256: 436d38398f32cbaa2ea15354e17f3a024e5dce7cdfc7b3db5c7cf3f448d3a3a8

Contents?: true

Size: 1.36 KB

Versions: 8

Compression:

Stored size: 1.36 KB

Contents

module Callback
  module InstanceMethods
    # Registers a callback for the event on the object. The callback can either be a block or a proc.
    # When the callbacks are notified, the return value of the proc is passed to the caller.
    def register_callback(event, callback_proc=nil, &callback_block)
      callbacks.define(event, callback_proc, &callback_block)
    end

    # Removes the callback from the event. The callback proc must be the same
    # object as the one that was passed to register_callback.
    def unregister_callback(event, callback_proc)
      callbacks.undefine(event, callback_proc)
    end

    protected
    # Notifies the callbacks registered with the event on the object. Arguments can be passed to the callbacks.
    # An error handler may be passed in as a block. If there is an error, the block is called with
    # error object as an argument.
    # An array of the return values of the callbacks is returned.
    def notify_callbacks(event, *args, &error_handler)
      callbacks.notify(event, *args, &error_handler)
    end

    def notify_class_callbacks(event, *args, &error_handler)
      self.class.send(:notify_callbacks, event, *args, &error_handler)      
    end

    # The CallbackContainer for this object.
    def callbacks
      @callbacks ||= CallbackContainer.new
    end
  end
end

class Object
  include Callback::InstanceMethods
end

Version data entries

8 entries across 8 versions & 3 rubygems

Version Path
puppet-0.22.4 test/lib/spec/callback/extensions/object.rb
puppet-0.23.0 test/lib/spec/callback/extensions/object.rb
puppet-0.23.1 test/lib/spec/callback/extensions/object.rb
puppet-0.23.2 test/lib/spec/callback/extensions/object.rb
riess-0.0.8 vendor/rspec-0.8.2/lib/spec/callback/extensions/object.rb
rspec-0.8.0 lib/spec/callback/extensions/object.rb
rspec-0.8.1 lib/spec/callback/extensions/object.rb
rspec-0.8.2 lib/spec/callback/extensions/object.rb