python-markdown-oembed/mdx_oembed/extension.py
Sami Turcotte c3a4466eca Reconcile with Markdown 2.6
Updated the initialization of OEmbedExtension to be compatible with
Markdown 2.6. See https://pythonhosted.org/Markdown/release-2.6.html
2015-04-02 03:47:33 -04:00

36 lines
1.2 KiB
Python

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