From 2ea3c1f322c177ad2c20fe04f389af5a6d1b3dc8 Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Fri, 11 Nov 2016 02:33:01 +0300 Subject: [PATCH] [sync] + kazimir support --- utils/Sync/kazimir/__init__.py | 7 +++++++ utils/Sync/kazimir/video.py | 38 ++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 utils/Sync/kazimir/__init__.py create mode 100644 utils/Sync/kazimir/video.py diff --git a/utils/Sync/kazimir/__init__.py b/utils/Sync/kazimir/__init__.py new file mode 100644 index 00000000..6f67593f --- /dev/null +++ b/utils/Sync/kazimir/__init__.py @@ -0,0 +1,7 @@ +from markdown import markdown + +from kazimir.video import VideoExtension + + +def kazimir_to_html(text): + return markdown(text, extensions=[VideoExtension()]) diff --git a/utils/Sync/kazimir/video.py b/utils/Sync/kazimir/video.py new file mode 100644 index 00000000..4f7060bd --- /dev/null +++ b/utils/Sync/kazimir/video.py @@ -0,0 +1,38 @@ +from markdown import Extension +from markdown.inlinepatterns import Pattern +from markdown.util import etree + + +class VideoExtension(Extension): + def add_inline(self, md, name, klass, re): + pattern = klass(re) + pattern.md = md + pattern.ext = self + md.inlinePatterns.add(name, pattern, "[A-Za-z0-9_&=-]+)\S*' + self.add_inline(md, 'youtube', Youtube, youtube) + + +class Youtube(Pattern): + def handleMatch(self, m): + url = 'https://www.youtube.com/embed/%s' % m.group('youtubeargs') + return flex_video(url) + + +def flex_video(url): + """ +
+ +
+ """ + iframe = etree.Element('iframe') + iframe.set('src', url) + iframe.set('frameborder', '0') + iframe.set('allowfullscreen', '') + + obj = etree.Element('div') + obj.set('class', "kazimir-video") + obj.append(iframe) + return obj