octopress-video-tag 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 645e8f6db5255d2289f6866db44bf4c2d40d597f
4
- data.tar.gz: 8ccc182de25e86c1ac7d5e9f0489b9fc010403c3
3
+ metadata.gz: 6ebabbd607b450a0c46542c4646f25c3fa4dba6d
4
+ data.tar.gz: 58df246681b740999e7bbfda111477975dedbb1b
5
5
  SHA512:
6
- metadata.gz: 6a058f9063a78d5da710858e3dd75bbb6b7aad577ae73f913a0c995827a18be8ced928f12651e64043f56fcbc9fc61750aaf49498f5ad2dcce93be7f05be8eae
7
- data.tar.gz: cd7eb9f28978b8014e6e654c626d33c75f2b6fe7ec49c6501f60e764350c217dca11d7b613aa5779645807694363dad236e36b72240fc12d35669e8cdf6b51b0
6
+ metadata.gz: ad4cda3fd9a36fb720ee3829747b84267dedfbf85a5c2f38b232cd849d1ea04ecec3a54116b693402291e53127831a055a9a13b5ce03876943ed60610ce0249b
7
+ data.tar.gz: c8f755880570c3b422dc272631dda8b1b5b5cbc4e0f83950de699c86991cf4f25345c82ef0b868b8f9efc60a708c0fd8d2f81470d56e606bfdf1127eee163677
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # Changelog
2
+
3
+ ### 1.1.0 (2015-01-08)
4
+ - New: Liquid can be processed in tag.
5
+
6
+ ### 1.0.0 (2015-01-08)
7
+ - Initial release
data/README.md CHANGED
@@ -56,16 +56,15 @@ Each video is embedded with a minuscule bit of javascript which plays videos whe
56
56
  ## Examples:
57
57
 
58
58
  ```
59
- {% video /videos/clouds.mp4 %}
59
+ {% video {{ site.cdn }}/videos/clouds.mp4 %}
60
60
  {% video featured wide /images/clouds.jpg /videos/clouds.mp4 /videos/clouds.webm /videos/clouds.ogv 1080px 608px preload:auto %}
61
61
  ```
62
62
 
63
63
  This would output the following HTML
64
64
 
65
65
  ```html
66
- <video controls poster='' width='' height='' preload='metadata'
67
- onclick='(function(el){ if(el.paused) el.play(); else el.pause() })(this)'>
68
- <source src='/videos/clouds.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
66
+ <video controls preload='metadata' onclick='(function(el){ if(el.paused) el.play(); else el.pause() })(this)'>
67
+ <source src='https://cdn.com/video/clouds.mp4' type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
69
68
  </video>
70
69
 
71
70
  <video class='featured wide' controls poster='/images/clouds.jpg' width='1080px' height='608px' preload='auto'
@@ -11,55 +11,78 @@ module Octopress
11
11
  Preload = /(:?preload: *(:?\S+))/i
12
12
  Size = /\s(auto|\d\S+)\s?(auto|\d\S+)?/i
13
13
  URLs = /((https?:\/)?\/\S+)/i
14
+ Types = {
15
+ '.mp4' => "type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'",
16
+ '.ogv' => "type='video/ogg; codecs=\"theora, vorbis\"'",
17
+ '.webm' => "type='video/webm; codecs=\"vp8, vorbis\"'"
18
+ }
14
19
 
15
20
  def initialize(tag_name, tag_markup, tokens)
16
21
  @markup = tag_markup
17
- markup = tag_markup.dup
22
+ super
23
+ end
18
24
 
19
- @preload = markup.scan(Preload).flatten.compact.last || "metadata"
20
- markup.sub!(Preload, '')
25
+ def render(context)
26
+ @markup = process_liquid(context)
21
27
 
22
- @sizes = markup.scan(Size).flatten.compact
23
- markup.sub!(Size, '')
28
+ if sources.size > 0
29
+ video = "<video #{classes} controls #{poster} #{sizes} #{preload} #{click_to_play(context)}>"
30
+ video += sources
31
+ video += "</video>"
32
+ else
33
+ raise "No video mp4, ogv, or webm urls found in {% video #{@markup} %}"
34
+ end
35
+ end
36
+
37
+ def click_to_play(context)
38
+ if context.environments.first['site']['click_to_play_video'] != false
39
+ "onclick='(function(el){ if(el.paused) el.play(); else el.pause() })(this)'"
40
+ end
41
+ end
24
42
 
25
- urls = markup.scan(URLs).map{ |m| m.first }
26
- @videos = urls.select {|u| u.match /mp4|ogv|webm/i}
27
- @poster = urls.select {|u| u.match /jpe?g|png|gif/i}.first
28
- markup.gsub!(URLs, '')
43
+ def sources
44
+ @sources ||= begin
45
+ vids = urls.select {|u| u.match /mp4|ogv|webm/i}
29
46
 
30
- if !(@classes = markup.strip).empty?
31
- @classes = "class='#{@classes}' "
47
+ vids.collect do |v|
48
+ "<source src='#{v}' #{Types[File.extname(v)]}>"
49
+ end.join('')
32
50
  end
51
+ end
33
52
 
34
- super
53
+ def poster
54
+ p = urls.select {|u| u.match /jpe?g|png|gif/i}.first
55
+ "poster='#{p}'" if p
35
56
  end
36
57
 
37
- def render(context)
58
+ def urls
59
+ @markup.scan(URLs).map{ |m| m.first }
60
+ end
38
61
 
39
- output = super
40
- type = {
41
- 'mp4' => "type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'",
42
- 'ogv' => "type='video/ogg; codecs=\"theora, vorbis\"'",
43
- 'webm' => "type='video/webm; codecs=\"vp8, vorbis\"'"
44
- }
62
+ def sizes
63
+ s = @markup.scan(Size).flatten.compact
64
+ attrs = "width='#{s[0]}'" if s[0]
65
+ attrs += "height='#{s[1]}'" if s[1]
66
+ attrs
67
+ end
45
68
 
46
- if context.environments.first['site']['click_to_play_video'] != false
47
- clickToPlay = "onclick='(function(el){ if(el.paused) el.play(); else el.pause() })(this)'"
48
- else
49
- clickToPlay = ''
69
+ def preload
70
+ if p = @markup.scan(Preload).flatten.compact.last || "metadata"
71
+ "preload='#{p}'"
50
72
  end
73
+ end
51
74
 
52
- if @videos && @videos.size > 0
53
- video = "<video #{@classes}controls poster='#{@poster}' width='#{@sizes[0]}' height='#{@sizes[1]}' preload='#{@preload}' #{clickToPlay}>"
54
- @videos.each do |v|
55
- t = v.match(/([^\.]+)$/)[1]
56
- video += "<source src='#{v}' #{type[t]}>"
57
- end
58
- video += "</video>"
59
- else
60
- raise "No video mp4, ogv, or webm urls found in {% video #{@markup} %}"
75
+ def classes
76
+ leftovers = @markup.sub(Preload, '').sub(Size, '').gsub(URLs, '')
77
+
78
+ if !(classes = leftovers.strip).empty?
79
+ "class='#{classes}'"
61
80
  end
62
81
  end
82
+
83
+ def process_liquid(context)
84
+ Liquid::Template.parse(@markup).render!(context.environments.first)
85
+ end
63
86
  end
64
87
  end
65
88
  end
@@ -1,7 +1,7 @@
1
1
  module Octopress
2
2
  module Tags
3
3
  module VideoTag
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octopress-video-tag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Mathis
@@ -87,6 +87,7 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - CHANGELOG.md
90
91
  - LICENSE.txt
91
92
  - README.md
92
93
  - lib/octopress-video-tag.rb