module ActionMailer::Previews::ClassMethods

def interceptor_class_for(interceptor)

def interceptor_class_for(interceptor)
  case interceptor
  when String, Symbol
    interceptor.to_s.camelize.constantize
  else
    interceptor
  end
end

def register_preview_interceptor(interceptor)

string is passed in it will be constantized.
Either a class or a string can be passed in as the Interceptor. If a
Register an Interceptor which will be called before mail is previewed.
def register_preview_interceptor(interceptor)
  preview_interceptor = interceptor_class_for(interceptor)
  unless preview_interceptors.include?(preview_interceptor)
    preview_interceptors << preview_interceptor
  end
end

def register_preview_interceptors(*interceptors)

Register one or more Interceptors which will be called before mail is previewed.
def register_preview_interceptors(*interceptors)
  interceptors.flatten.compact.each { |interceptor| register_preview_interceptor(interceptor) }
end

def unregister_preview_interceptor(interceptor)

string is passed in it will be constantized.
Either a class or a string can be passed in as the Interceptor. If a
Unregister a previously registered Interceptor.
def unregister_preview_interceptor(interceptor)
  preview_interceptors.delete(interceptor_class_for(interceptor))
end

def unregister_preview_interceptors(*interceptors)

Unregister one or more previously registered Interceptors.
def unregister_preview_interceptors(*interceptors)
  interceptors.flatten.compact.each { |interceptor| unregister_preview_interceptor(interceptor) }
end