summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--blog/_plugins/video_embed.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/blog/_plugins/video_embed.rb b/blog/_plugins/video_embed.rb
new file mode 100644
index 0000000..cf4d04a
--- /dev/null
+++ b/blog/_plugins/video_embed.rb
@@ -0,0 +1,42 @@
+# Fetched from https://github.com/eug/jekyll-video-embed
+# MIT-licence: https://raw.githubusercontent.com/eug/jekyll-video-embed/master/LICENSE
+
+module Jekyll
+ class VideoEmbed < Liquid::Tag
+
+ Syntax = /^\s*([^\s]+)(\s+(\d+)\s+(\d+)\s*)?/
+
+ Hosts = {
+ "ted" => ->(id) { "https://embed-ssl.ted.com/talks/#{id}.html" },
+ "ustream" => ->(id) { "http://ustream.tv/embed/#{id}" },
+ "vimeo" => ->(id) { "https://player.vimeo.com/video/#{id}" },
+ "youtube" => ->(id) { "http://youtube.com/embed/#{id}" }
+ }
+
+ def initialize(tag_name, markup, tokens)
+ super
+
+ if markup =~ Syntax then
+ @host = Hosts[tag_name]
+ @id = $1
+
+ if $2.nil? then
+ @width = 590
+ @height = 360
+ else
+ @width = $2.to_i
+ @height = $3.to_i
+ end
+ else
+ raise "No video ID provided in the \"#{tag_name}\" tag"
+ end
+ end
+
+ def render(context)
+ "<iframe width=\"#{@width}\" height=\"#{@height}\" src=\"#{@host.call(@id)}\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>"
+ end
+
+ Hosts.each_key { |key| Liquid::Template.register_tag key, self }
+
+ end
+end