+
+ # A generic version of {#describe_user}/{#describe_domain} that
+ # dispatches base on the class of the target.
+ #
+ # @param target [User,Domain] either a user or a domain to describe.
+ #
+ # @return [String] a string describing the *target*. The contents of
+ # the string depend on the plugin.
+ #
+ def describe(target)
+ if target.is_a?(User)
+ if user_exists(target) then
+ return describe_user(target)
+ else
+ return 'User not found'
+ end
+ elsif target.is_a?(Domain)
+ if domain_exists(target) then
+ return describe_domain(target)
+ else
+ return 'Domain not found'
+ end
+ else
+ raise NotImplementedError
+ end
+ end
+
+
+ # Provide a description of the given *domain*. This is output along
+ # with the domain name and can be anything of use to the system
+ # administrator. The default doesn't do anything useful and should
+ # be overridden if possible.
+ #
+ # @param domain [Domain] the domain to describe.
+ #
+ # @return [String] a string description of *domain*.
+ #