def run(self): # ugly code is ugly! :P rv = [nodes.raw('', '<blockquote>\n', format='html')] rv.extend(LineBlock.run(self)) if 'author' in self.options: author = nodes.raw(self.options['author'], u'<span class="author">— ' + self.options['author'] + '</span>', format='html') rv.append(nodes.paragraph('', '', author)) rv.append(nodes.raw('', '<div class="clear"></div>\n', format='html')) rv.append(nodes.raw('', '</blockquote>\n', format='html')) return rv
with closing(urlopen(directives.uri(self.arguments[0]))) as fp: html = BeautifulSoup(fp.read()) try: data['title'] = html.head.title.text except: pass except Exception, err: raise self.error('Error in "%s" directive: %s' % (self.name, err)) except Exception, err: raise self.error('Error in "%s" directive: %s' % (self.name, err)) rv = [] if data['type'] == 'photo': rv.append(nodes.raw('', '<div class="oembed oembed-photo">', format='html')) rv.append(nodes.image(data['title'] or '', uri=data['url'], alt=data['title'] or '', width=str(data['width']), height=str(data['height']))) rv.append(nodes.raw('', '</div>', format='html')) elif data['type'] == 'rich': rv.append(nodes.raw('', data['html'], format='html', classes=['oembed', 'oembed-rich'])) elif data['type'] == 'video': rv.append(nodes.raw('', data['html'], format='html', classes=['oembed', 'oembed-video'])) elif data['type'] == 'link': uri = directives.uri(self.arguments[0]) label = nodes.strong('Link: ', 'Link: ') link = nodes.reference(uri, data.get('title', uri), refuri=uri)