'Return a directive adapter class that always gives the registered
directive its full name (\'domain:name\') as ``self.name``.'

def directive(self, name):

    if (name in self._directive_cache):
        return self._directive_cache[name]
    if (name not in self.directives):
        return None
    fullname = ('%s:%s' % (self.name, name))
    BaseDirective = self.directives[name]
    class DirectiveAdapter(BaseDirective, ):
        def run(self):
            self.name = fullname
            return BaseDirective.run(self)
    self._directive_cache[name] = DirectiveAdapter
    return DirectiveAdapter
