def strip_oembeds(text, args=None): """ Take a block of text and strip all the embeds from it, optionally taking a maxwidth, maxheight / resource_type Usage: {{ post.content|strip_embeds }} {{ post.content|strip_embeds:"600x600xphoto" }} {{ post.content|strip_embeds:"video" }} """ resource_type = width = height = None if args: dimensions = args.lower().split('x') if len(dimensions) in (3, 1): resource_type = dimensions.pop() if len(dimensions) == 2: width, height = map(lambda x: int(x), dimensions) client = OEmbedConsumer() return mark_safe(client.strip(text, width, height, resource_type))
def strip_oembeds(text, args=None): """ Take a block of text and strip all the embeds from it, optionally taking a maxwidth, maxheight / resource_type Usage: {{ post.content|strip_embeds }} {{ post.content|strip_embeds:"600x600xphoto" }} {{ post.content|strip_embeds:"video" }} """ resource_type = width = height = None if args: dimensions = args.lower().split('x') if len(dimensions) in (3, 1): resource_type = dimensions.pop() if len(dimensions) == 2: width, height = map(lambda x: int(x), dimensions) client = OEmbedConsumer() return mark_safe(client.strip(text, width, height, resource_type))
class ConsumerTestCase(BaseOEmbedTestCase): def setUp(self): "Set up test environment" super(ConsumerTestCase, self).setUp() self.oembed_client = OEmbedConsumer() def test_parse_text(self): consumed = self.oembed_client.parse_text(self.category_url) self.assertEqual(consumed, self.category_embed) def test_parse_html(self): consumed = self.oembed_client.parse_html('<p>%s</p>' % self.category_url) self.assertEqual(consumed, '<p>%s</p>' % self.category_embed) def test_extract_oembeds(self): embeds = self.oembed_client.extract_oembeds(self.category_url) self.assertEqual(len(embeds), 1) self.assertEqual(embeds[0]['original_url'], self.category_url) embeds = self.oembed_client.extract_oembeds(self.category_url, resource_type='photo') self.assertEqual(len(embeds), 1) self.assertEqual(embeds[0]['original_url'], self.category_url) embeds = self.oembed_client.extract_oembeds(self.category_url, resource_type='video') self.assertEqual(len(embeds), 0) def test_extract_oembeds_html(self): embeds = self.oembed_client.extract_oembeds_html('<p>%s</p>' % self.category_url) self.assertEqual(len(embeds), 1) self.assertEqual(embeds[0]['original_url'], self.category_url) embeds = self.oembed_client.extract_oembeds_html('<p>%s</p>' % self.category_url, resource_type='photo') self.assertEqual(len(embeds), 1) self.assertEqual(embeds[0]['original_url'], self.category_url) embeds = self.oembed_client.extract_oembeds_html('<p>%s</p>' % self.category_url, resource_type='video') self.assertEqual(len(embeds), 0) embeds = self.oembed_client.extract_oembeds_html('<p><a href="%s">Some link</a></p>' % self.category_url) self.assertEqual(len(embeds), 0) embeds = self.oembed_client.extract_oembeds_html('<p><a href="/some-link/">%s</a></p>' % self.category_url) self.assertEqual(len(embeds), 0) def test_strip(self): test_string = 'testing [%s] [http://www.google.com]' % self.category_url expected = 'testing [] [http://www.google.com]' self.assertEqual(self.oembed_client.strip(test_string), expected) # with width & height self.assertEqual(self.oembed_client.strip(test_string, 600, 400), expected) # with resource_type self.assertEqual(self.oembed_client.strip(test_string, resource_type='photo'), expected) self.assertEqual(self.oembed_client.strip(test_string, resource_type='link'), test_string) def test_strip_html(self): test_string = '<a href="%(match)s">%(match)s</a> <p>%(no_match)s</p>' % \ {'match': self.category_url, 'no_match': 'http://www.google.com'} expected = test_string self.assertEqual(self.oembed_client.strip(test_string), expected) def test_strip_html_failure(self): # show how strip can fail when handling html - it picks up the match # in the p tag then replaces it everywhere, including in the a tags test_string = '<a href="%(match)s">%(match)s</a> <p>%(match)s</p> <p>%(no_match)s</p>' % \ {'match': self.category_url, 'no_match': 'http://www.google.com'} expected = test_string actual = '<a href=""></a> <p></p> <p>http://www.google.com</p>' self.assertEqual(self.oembed_client.strip(test_string), actual)
class ConsumerTestCase(BaseOEmbedTestCase): def setUp(self): "Set up test environment" super(ConsumerTestCase, self).setUp() self.oembed_client = OEmbedConsumer() def test_parse_text(self): consumed = self.oembed_client.parse_text(self.category_url) self.assertEqual(consumed, self.category_embed) def test_parse_html(self): consumed = self.oembed_client.parse_html('<p>%s</p>' % self.category_url) self.assertEqual(consumed, '<p>%s</p>' % self.category_embed) def test_extract_oembeds(self): embeds = self.oembed_client.extract_oembeds(self.category_url) self.assertEqual(len(embeds), 1) self.assertEqual(embeds[0]['original_url'], self.category_url) embeds = self.oembed_client.extract_oembeds(self.category_url, resource_type='photo') self.assertEqual(len(embeds), 1) self.assertEqual(embeds[0]['original_url'], self.category_url) embeds = self.oembed_client.extract_oembeds(self.category_url, resource_type='video') self.assertEqual(len(embeds), 0) def test_extract_oembeds_html(self): embeds = self.oembed_client.extract_oembeds_html('<p>%s</p>' % self.category_url) self.assertEqual(len(embeds), 1) self.assertEqual(embeds[0]['original_url'], self.category_url) embeds = self.oembed_client.extract_oembeds_html('<p>%s</p>' % self.category_url, resource_type='photo') self.assertEqual(len(embeds), 1) self.assertEqual(embeds[0]['original_url'], self.category_url) embeds = self.oembed_client.extract_oembeds_html('<p>%s</p>' % self.category_url, resource_type='video') self.assertEqual(len(embeds), 0) embeds = self.oembed_client.extract_oembeds_html( '<p><a href="%s">Some link</a></p>' % self.category_url) self.assertEqual(len(embeds), 0) embeds = self.oembed_client.extract_oembeds_html( '<p><a href="/some-link/">%s</a></p>' % self.category_url) self.assertEqual(len(embeds), 0) def test_strip(self): test_string = 'testing [%s] [http://www.google.com]' % self.category_url expected = 'testing [] [http://www.google.com]' self.assertEqual(self.oembed_client.strip(test_string), expected) # with width & height self.assertEqual(self.oembed_client.strip(test_string, 600, 400), expected) # with resource_type self.assertEqual( self.oembed_client.strip(test_string, resource_type='photo'), expected) self.assertEqual( self.oembed_client.strip(test_string, resource_type='link'), test_string) def test_strip_html(self): test_string = '<a href="%(match)s">%(match)s</a> <p>%(no_match)s</p>' % \ {'match': self.category_url, 'no_match': 'http://www.google.com'} expected = test_string self.assertEqual(self.oembed_client.strip(test_string), expected) def test_strip_html_failure(self): # show how strip can fail when handling html - it picks up the match # in the p tag then replaces it everywhere, including in the a tags test_string = '<a href="%(match)s">%(match)s</a> <p>%(match)s</p> <p>%(no_match)s</p>' % \ {'match': self.category_url, 'no_match': 'http://www.google.com'} expected = test_string actual = '<a href=""></a> <p></p> <p>http://www.google.com</p>' self.assertEqual(self.oembed_client.strip(test_string), actual)