diff --git a/liquid_tags/Readme.md b/liquid_tags/Readme.md index 2b4276f..8f25e34 100644 --- a/liquid_tags/Readme.md +++ b/liquid_tags/Readme.md @@ -14,7 +14,8 @@ First, in your pelicanconf.py file, add the plugins you want to use: PLUGIN_PATH = '/path/to/pelican-plugins' PLUGINS = ['liquid_tags.img', 'liquid_tags.video', - 'liquid_tags.include_code', 'liquid_tags.notebook'] + 'liquid_tags.youtube', 'liquid_tags.include_code', + 'liquid_tags.notebook'] There are several options available @@ -24,6 +25,14 @@ To insert a sized and labeled image in your document, enable the {% img [class name(s)] path/to/image [width [height]] [title text | "title text" ["alt text"]] %} +## Youtube Tag +To insert youtube video into a post, enable the +``liquid_tags.youtube`` plugin, and add to your document: + + {% youtube youtube_id [width] [height] %} + +The width and height are in pixels, and can be optionally specified. If they +are not, then the dimensions will be 640 (wide) by 390 (tall). ## Video Tag To insert flash/HTML5-friendly video into a post, enable the @@ -95,4 +104,4 @@ are a few extra steps required for this plugin: this will insert the proper css formatting into your document. -[1] https://github.com/ipython/nbconvert \ No newline at end of file +[1] https://github.com/ipython/nbconvert diff --git a/liquid_tags/youtube.py b/liquid_tags/youtube.py new file mode 100644 index 0000000..2a4060e --- /dev/null +++ b/liquid_tags/youtube.py @@ -0,0 +1,53 @@ +""" +Youtube Tag +--------- +This implements a Liquid-style youtube tag for Pelican, +based on the jekyll / octopress youtube tag [1]_ + +Syntax +------ +{% youtube id [width height] %} + +Example +------- +{% youtube dQw4w9WgXcQ 640 480 %} + +Output +------ + + +[1] https://gist.github.com/jamieowen/2063748 +""" +import os +import re +from .mdx_liquid_tags import LiquidTags + +SYNTAX = "{% youtube id [width height] %}" + +YOUTUBE = re.compile(r'(\w+)(\s+(\d+)\s(\d+))?') + +@LiquidTags.register('youtube') +def youtube(preprocessor, tag, markup): + width = 640 + height = 390 + youtube_id = None + + match = YOUTUBE.search(markup) + if match: + groups = match.groups() + youtube_id = groups[0] + width = groups[2] or width + height = groups[3] or height + + if youtube_id: + youtube_out = "".format(width=width, height=height, youtube_id=youtube_id) + else: + raise ValueError("Error processing input, " + "expected syntax: {0}".format(SYNTAX)) + + return youtube_out + + +#---------------------------------------------------------------------- +# This import allows image tag to be a Pelican plugin +from liquid_tags import register