Merge remote-tracking branch 'wenzil/master' into 0.2.0

This commit is contained in:
Tanner Netterville 2016-02-16 05:02:02 -06:00
commit 7d5a0ef503
5 changed files with 35 additions and 30 deletions

View file

@ -2,10 +2,8 @@
from mdx_oembed.extension import OEmbedExtension from mdx_oembed.extension import OEmbedExtension
VERSION = '0.1.4' VERSION = '0.1.9'
def makeExtension(configs=None): def makeExtension(**kwargs):
if isinstance(configs, list): return OEmbedExtension(**kwargs)
configs = dict(configs)
return OEmbedExtension(configs=configs)

View file

@ -2,15 +2,20 @@
import oembed import oembed
ENDPOINTS = { DEFAULT_ENDPOINTS = [
'youtube': oembed.OEmbedEndpoint('http://www.youtube.com/oembed', [ # Youtube
oembed.OEmbedEndpoint('http://www.youtube.com/oembed', [
'https?://(*.)?youtube.com/*', 'https?://(*.)?youtube.com/*',
'https?://youtu.be/*', 'https?://youtu.be/*',
]), ]),
'flickr': oembed.OEmbedEndpoint('http://www.flickr.com/services/oembed/', [
# Flickr
oembed.OEmbedEndpoint('http://www.flickr.com/services/oembed/', [
'https?://*.flickr.com/*', 'https?://*.flickr.com/*',
]), ]),
'vimeo': oembed.OEmbedEndpoint('http://vimeo.com/api/oembed.json', [
# Vimeo
oembed.OEmbedEndpoint('http://vimeo.com/api/oembed.json', [
'https?://vimeo.com/*', 'https?://vimeo.com/*',
]), ]),
} ]

View file

@ -1,22 +1,21 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from markdown import Extension from markdown import Extension
import oembed import oembed
from mdx_oembed.endpoints import ENDPOINTS from mdx_oembed.endpoints import DEFAULT_ENDPOINTS
from mdx_oembed.inlinepatterns import OEmbedLinkPattern, OEMBED_LINK_RE from mdx_oembed.inlinepatterns import OEmbedLinkPattern, OEMBED_LINK_RE
AVAILABLE_ENDPOINTS = ENDPOINTS.keys()
class OEmbedExtension(Extension): class OEmbedExtension(Extension):
config = { def __init__(self, **kwargs):
'allowed_endpoints': [ self.config = {
AVAILABLE_ENDPOINTS, 'allowed_endpoints': [
"A list of oEmbed endpoints to allow. Possible values are " DEFAULT_ENDPOINTS,
"{}.".format(', '.join(AVAILABLE_ENDPOINTS)), "A list of oEmbed endpoints to allow. Defaults to "
], "endpoints.DEFAULT_ENDPOINTS"
} ],
}
super(OEmbedExtension, self).__init__(**kwargs)
def extendMarkdown(self, md, md_globals): def extendMarkdown(self, md, md_globals):
self.oembed_consumer = self.prepare_oembed_consumer() self.oembed_consumer = self.prepare_oembed_consumer()
@ -25,10 +24,11 @@ class OEmbedExtension(Extension):
md.inlinePatterns.add('oembed_link', link_pattern, '<image_link') md.inlinePatterns.add('oembed_link', link_pattern, '<image_link')
def prepare_oembed_consumer(self): def prepare_oembed_consumer(self):
allowed_endpoints = self.getConfig('allowed_endpoints', allowed_endpoints = self.getConfig('allowed_endpoints', DEFAULT_ENDPOINTS)
AVAILABLE_ENDPOINTS)
consumer = oembed.OEmbedConsumer() consumer = oembed.OEmbedConsumer()
[consumer.addEndpoint(v)
for k,v in ENDPOINTS.items() if allowed_endpoints:
if k in allowed_endpoints] for endpoint in allowed_endpoints:
consumer.addEndpoint(endpoint)
return consumer return consumer

View file

@ -21,8 +21,10 @@ class OEmbedLinkPattern(Pattern):
html = self.get_oembed_html_for_match(match) html = self.get_oembed_html_for_match(match)
if html is None: if html is None:
return None return None
placeholder = self.markdown.htmlStash.store(html) else:
return placeholder html = "<figure class=\"oembed\">%s</figure>" % html
placeholder = self.markdown.htmlStash.store(html, True)
return placeholder
def get_oembed_html_for_match(self, match): def get_oembed_html_for_match(self, match):
url = match.group(3).strip() url = match.group(3).strip()

View file

@ -15,7 +15,7 @@ except Exception:
setup( setup(
name='python-markdown-oembed', name='python-markdown-oembed',
version='0.1.4', version='0.1.9',
description="Markdown extension to allow media embedding using the oEmbed " description="Markdown extension to allow media embedding using the oEmbed "
"standard.", "standard.",
long_description=LONG_DESCRIPTION, long_description=LONG_DESCRIPTION,
@ -36,7 +36,7 @@ setup(
], ],
install_requires=[ install_requires=[
"python-oembed >= 0.2.1", "python-oembed >= 0.2.1",
"Markdown >= 2.2.0", "Markdown >= 2.6.1",
], ],
test_suite='nose.collector', test_suite='nose.collector',