Commit a95e0de0e4c413f0712a8cd5500f5970ff84b7fb
1 parent
a5c0c0f3
Exists in
master
and in
27 other branches
video: fix youtube id format
Showing
2 changed files
with
12 additions
and
3 deletions
Show diff stats
plugins/video/lib/video_block.rb
... | ... | @@ -4,8 +4,10 @@ class VideoBlock < Block |
4 | 4 | settings_items :width, :type => :integer, :default => 400 |
5 | 5 | settings_items :height, :type => :integer, :default => 315 |
6 | 6 | |
7 | + YOUTUBE_ID_FORMAT = 'a-zA-Z0-9_-' | |
8 | + | |
7 | 9 | def is_youtube? |
8 | - url.match(/.*(youtube.com.*v=[[:alnum:]]+|youtu.be\/[[:alnum:]]+).*/) ? true : false | |
10 | + url.match(/.*(youtube.com.*v=[#{YOUTUBE_ID_FORMAT}]+|youtu.be\/[#{YOUTUBE_ID_FORMAT}]+).*/) ? true : false | |
9 | 11 | end |
10 | 12 | |
11 | 13 | def is_vimeo? |
... | ... | @@ -44,8 +46,8 @@ class VideoBlock < Block |
44 | 46 | |
45 | 47 | def extract_youtube_id |
46 | 48 | return nil unless is_youtube? |
47 | - youtube_match = url.match('v=([[:alnum:]]*)') | |
48 | - youtube_match ||= url.match('youtu.be\/([[:alnum:]]*)') | |
49 | + youtube_match = url.match("v=([#{YOUTUBE_ID_FORMAT}]*)") | |
50 | + youtube_match ||= url.match("youtu.be\/([#{YOUTUBE_ID_FORMAT}]*)") | |
49 | 51 | youtube_match[1] unless youtube_match.nil? |
50 | 52 | end |
51 | 53 | ... | ... |
plugins/video/test/unit/video_block_test.rb
... | ... | @@ -70,6 +70,13 @@ class VideoBlockTest < ActiveSupport::TestCase |
70 | 70 | assert_equal id, block.send('extract_youtube_id') |
71 | 71 | end |
72 | 72 | |
73 | + should "extract youtube id from youtube video url's if it has underline and hyphen" do | |
74 | + block = VideoBlock.new | |
75 | + id = 'oi43_re-d2' | |
76 | + block.url = "youtube.com/?v=#{id}" | |
77 | + assert_equal id, block.send('extract_youtube_id') | |
78 | + end | |
79 | + | |
73 | 80 | should "extract youtube id from youtube video url's if it's a valid youtube short url" do |
74 | 81 | block = VideoBlock.new |
75 | 82 | id = 'oi43jre2d2' | ... | ... |