diff --git a/lib/site_plugin.rb b/lib/site_plugin.rb index 3ac1c3856fb0437456aba29e07b2cf686331f0e2..a756a3e3458188af0070851ecbd40e9b974acc2e 100644 --- a/lib/site_plugin.rb +++ b/lib/site_plugin.rb @@ -14,7 +14,7 @@ class SitePlugin # Return the plugin that can handle a given site. def self.for_site(site) - @@repository.find {|handler| handler.can_handle? site } + @@repository.find { |handler| handler.can_handle? site } end # A place holder method. This method *must* be implemented in the subclasses. diff --git a/plugins/youtube_plugin.rb b/plugins/youtube_plugin.rb new file mode 100644 index 0000000000000000000000000000000000000000..bffb6816cb88eb4ecb2443c0a5acb80a69437b9b --- /dev/null +++ b/plugins/youtube_plugin.rb @@ -0,0 +1,12 @@ +require_relative '../lib/site_plugin.rb' + +class YoutubePlugin < SitePlugin + def self.can_handle?(site) + site =~ /^http:\/\/((www.)?youtube.(fr|com)\/watch\?v=|youtu\.be\/)[a-zA-Z0-9]+$/ + end + + public + def get(url) + puts "Oh oh oh ! #{url}" + end +end diff --git a/spec/site_plugin_spec.rb b/spec/site_plugin_spec.rb index 612cf3133433eb4b83040587ec620dc13d8b1ecc..241ab691d2cdabce1e31c69cc99bbba6a3f97b0c 100644 --- a/spec/site_plugin_spec.rb +++ b/spec/site_plugin_spec.rb @@ -1,5 +1,4 @@ -$LOAD_PATH << '../lib' -require 'site_plugin' +require_relative '../lib/site_plugin.rb' describe SitePlugin do describe 'inherance' do @@ -25,4 +24,11 @@ describe SitePlugin do SitePlugin.for_site('OfCourseICanHandle_test_').nil?.should be_false end end + + describe '#can_handle?' do + it 'raise an exception' do + @siteplugin = SitePlugin.new + lambda { @siteplugin.can_handle?('test') }.should raise_error + end + end end diff --git a/spec/youtube_plugin_spec.rb b/spec/youtube_plugin_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..3dba54c3e799eb2adf562dd4ace5e0ba0ae67ba7 --- /dev/null +++ b/spec/youtube_plugin_spec.rb @@ -0,0 +1,17 @@ +require_relative '../plugins/youtube_plugin.rb' + +describe YoutubePlugin do + describe '.can_handle?' do + it 'true with "youtube.com"' do + YoutubePlugin.can_handle?('http://youtube.com/watch?v=Pb8VPYMgHlg').should be_true + end + + it 'true with "www.youtube.com"' do + YoutubePlugin.can_handle?('http://www.youtube.com/watch?v=Pb8VPYMgHlg').should be_true + end + + it 'true with "youtu.be"' do + YoutubePlugin.can_handle?('http://youtu.be/Pb8VPYMgHlg').should be_true + end + end +end