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 +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +3 -4
- data/lib/octopress-video-tag.rb +55 -32
- data/lib/octopress-video-tag/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ebabbd607b450a0c46542c4646f25c3fa4dba6d
|
4
|
+
data.tar.gz: 58df246681b740999e7bbfda111477975dedbb1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad4cda3fd9a36fb720ee3829747b84267dedfbf85a5c2f38b232cd849d1ea04ecec3a54116b693402291e53127831a055a9a13b5ce03876943ed60610ce0249b
|
7
|
+
data.tar.gz: c8f755880570c3b422dc272631dda8b1b5b5cbc4e0f83950de699c86991cf4f25345c82ef0b868b8f9efc60a708c0fd8d2f81470d56e606bfdf1127eee163677
|
data/CHANGELOG.md
ADDED
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
|
67
|
-
|
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'
|
data/lib/octopress-video-tag.rb
CHANGED
@@ -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
|
-
|
22
|
+
super
|
23
|
+
end
|
18
24
|
|
19
|
-
|
20
|
-
markup
|
25
|
+
def render(context)
|
26
|
+
@markup = process_liquid(context)
|
21
27
|
|
22
|
-
|
23
|
-
|
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
|
-
|
26
|
-
@
|
27
|
-
|
28
|
-
markup.gsub!(URLs, '')
|
43
|
+
def sources
|
44
|
+
@sources ||= begin
|
45
|
+
vids = urls.select {|u| u.match /mp4|ogv|webm/i}
|
29
46
|
|
30
|
-
|
31
|
-
|
47
|
+
vids.collect do |v|
|
48
|
+
"<source src='#{v}' #{Types[File.extname(v)]}>"
|
49
|
+
end.join('')
|
32
50
|
end
|
51
|
+
end
|
33
52
|
|
34
|
-
|
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
|
58
|
+
def urls
|
59
|
+
@markup.scan(URLs).map{ |m| m.first }
|
60
|
+
end
|
38
61
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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
|
-
|
47
|
-
|
48
|
-
|
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
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
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.
|
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
|