class CurationConcerns::Callbacks::Registry

Attributes

callbacks[R]

Public Class Methods

new() click to toggle source
# File lib/curation_concerns/callbacks/registry.rb, line 6
def initialize
  @callbacks = {}
end

Public Instance Methods

enable(hook, *more_hooks) click to toggle source

Enables a callback by specifying one or more hooks.

# File lib/curation_concerns/callbacks/registry.rb, line 11
def enable(hook, *more_hooks)
  ([hook] + more_hooks).each { |h| @callbacks[h] ||= nil }
end
enabled() click to toggle source

Returns all enabled callback hooks.

# File lib/curation_concerns/callbacks/registry.rb, line 16
def enabled
  @callbacks.keys
end
enabled?(hook) click to toggle source

Returns true if the callback hook has been enabled.

# File lib/curation_concerns/callbacks/registry.rb, line 21
def enabled?(hook)
  @callbacks.key? hook
end
run(hook, *args) click to toggle source

Runs the callback defined for a given hook, with the arguments provided

# File lib/curation_concerns/callbacks/registry.rb, line 37
def run(hook, *args)
  raise NotEnabled unless enabled?(hook)
  return nil unless set?(hook)
  @callbacks[hook].call(*args)
end
set(hook, &block) click to toggle source

Defines a callback for a given hook.

# File lib/curation_concerns/callbacks/registry.rb, line 26
def set(hook, &block)
  raise NoBlockGiven, "a block is required when setting a callback" unless block_given?
  @callbacks[hook] = proc(&block)
end
set?(hook) click to toggle source

Returns true if a callback has been defined for a given hook.

# File lib/curation_concerns/callbacks/registry.rb, line 32
def set?(hook)
  enabled?(hook) && @callbacks[hook].respond_to?(:call)
end