octopress-video-tag 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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