def METHOD_NAME(self):
    """ Required by the Directive interface. Create docutils nodes """
    options = {
        'url': self.arguments[0],
        'title': self.options.get('title', ''),
        'description': self.options.get('description', ''),
        'classes': self.options.get('class', ''),
        'image_url': self.options.get('image_url', ''),
        'author': self.options.get('author', ''),
        'author_url': self.options.get('author_url', ''),
        'author_by': self.options.get('author_by', ''),
    }
    if not options['title']:
        if options['url'].endswith('/'):
            options['title'] = options['url'][:-1]
        options['title'] = options['title'].split('/')[-1]
        options['title'] = options['title'].split('?')[0]
        if not options['description']:
            options['description'] = options['title']
        return [nodes.raw('', CODE_URL_BASIC.format(**options), format='html')]
    if options['image_url']:
        options['image_url'] = CODE_IMAGE.format(**options)
    if options['author_by']:
        options['author_by'] = options['author_by'].strip() + ' '
    if options['author'] and options['author_url']:
        options['author'] = CODE_AUTHOR_URL.format(**options)
    elif options['author']:
        options['author'] = CODE_AUTHOR.format(**options)
    if options['description']:
        options['description'] = CODE_DESCRIPTION.format(**options)
    options['url'] = CODE_URL.format(**options)
    return [nodes.raw('', CODE.format(**options), format='html')]