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