module VCR::Hooks

def self.included(klass)

def self.included(klass)
  klass.class_eval do
    extend ClassMethods
    hooks_module = Module.new
    const_set("DefinedHooks", hooks_module)
    include hooks_module
  end
end

def clear_hooks

def clear_hooks
  hooks.clear
end

def has_hooks_for?(hook_type)

def has_hooks_for?(hook_type)
  hooks[hook_type].any?
end

def hooks

def hooks
  @hooks ||= Hash.new do |hash, hook_type|
    hash[hook_type] = []
  end
end

def invoke_hook(hook_type, *args)

def invoke_hook(hook_type, *args)
  hooks[hook_type].map do |hook|
    hook.conditionally_invoke(*args)
  end
end