embedda 0.0.2 → 0.0.3

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.
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 1.9.3-p385
1
+ 1.9.3-p392
data/README.md CHANGED
@@ -26,6 +26,28 @@ This gem adds `String#embedda` to Ruby strings. You use it like this:
26
26
  => "String heheh <iframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/BVtYSy83XXw\" frameborder=\"0\" allowfullscreen></iframe> yeah"
27
27
  ```
28
28
 
29
+ If you need only one of the parsers you can do like this:
30
+
31
+ ```ruby
32
+ [2] pry(main)> "String heheh http://www.youtube.com/watch?v=BVtYSy83XXw yeah".embedda(:filters => :youtube)
33
+ => "String heheh <iframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/BVtYSy83XXw\" frameborder=\"0\" allowfullscreen></iframe> yeah"
34
+ ```
35
+
36
+ This is the default behavoir:
37
+
38
+ ```ruby
39
+ [2] pry(main)> "String heheh http://www.youtube.com/watch?v=BVtYSy83XXw yeah".embedda(:filters => [:youtube, :vimeo])
40
+ => "String heheh <iframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/BVtYSy83XXw\" frameborder=\"0\" allowfullscreen></iframe> yeah"
41
+ ```
42
+
43
+ ## Supported embeds
44
+
45
+ Currently embedda can embed the following formats:
46
+
47
+ * Youtube
48
+ * Vimeo
49
+ * Soundcloud
50
+
29
51
  ## Links
30
52
 
31
53
  Rubygems: https://rubygems.org/gems/embedda
data/embedda.gemspec CHANGED
@@ -3,8 +3,8 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.name = "embedda"
6
- gem.version = '0.0.2'
7
- gem.authors = ["Kasper Grubbe"]
6
+ gem.version = '0.0.3'
7
+ gem.authors = ["Kasper Grubbe",'Christian Takle']
8
8
  gem.email = ["kaspergrubbe@gmail.com"]
9
9
  gem.homepage = "http://github.com/kaspergrubbe/embedda"
10
10
  gem.summary = %q{Embed content strings in your strings, and turn it to embed HTML!}
data/lib/embedda.rb CHANGED
@@ -1,7 +1,17 @@
1
+ require 'cgi'
2
+
1
3
  class String
2
- def embedda
3
- compiled = youtube_replace(self)
4
- compiled = vimeo_replace(compiled)
4
+ def embedda(options = {})
5
+ options = {:filters => [:youtube, :vimeo, :soundcloud]}.merge(options)
6
+
7
+ # Make sure that filters is an array because we allow the short form of
8
+ # "hello".embedda(:filters => :youtube) instead of "hello".embedda(:filters => [:youtube])
9
+ options[:filters] = Array(options[:filters])
10
+
11
+ compiled = self
12
+ compiled = youtube_replace(compiled) if options[:filters].include?(:youtube)
13
+ compiled = vimeo_replace(compiled) if options[:filters].include?(:vimeo)
14
+ compiled = soundcloud_replace(compiled) if options[:filters].include?(:soundcloud)
5
15
 
6
16
  return compiled
7
17
  end
@@ -26,4 +36,18 @@ class String
26
36
  def vimeo_player(token)
27
37
  "<iframe src=\"http://player.vimeo.com/video/#{token}\" width=\"500\" height=\"281\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>"
28
38
  end
29
- end
39
+
40
+ def soundcloud_replace(compiled)
41
+ r = /(https?:\/\/(?:www.)?soundcloud.com\/[A-Za-z0-9]+(?:[-_][A-Za-z0-9]+)*(?!\/sets(?:\/|$))(?:\/[A-Za-z0-9]+(?:[-_][A-Za-z0-9]+)*){1,2}\/?)/i
42
+ compiled.gsub!(r) { |match| soundcloud_player(match) }
43
+
44
+ return compiled
45
+ end
46
+
47
+ def soundcloud_player(token)
48
+ url_encoded_string = CGI::escape(token)
49
+
50
+ # Note: added '&' ...?url=...&
51
+ "<iframe width=\"100%\" height=\"166\" scrolling=\"no\" frameborder=\"no\" src=\"https://w.soundcloud.com/player/?url=#{url_encoded_string}&color=ff6600&amp;auto_play=false&amp;show_artwork=false\"></iframe>"
52
+ end
53
+ end
data/spec/embedda_spec.rb CHANGED
@@ -36,6 +36,16 @@ describe "Embedda" do
36
36
  story = "\n\nMy suggestions for getting ready for the dreadful monday we all hate:\n\nhttp://www.youtube.com/watch?v=dQw4w9WgXcQ\n\n".embedda
37
37
  expect(story).to eq("\n\nMy suggestions for getting ready for the dreadful monday we all hate:\n\n#{@embed_string}\n\n")
38
38
  end
39
+
40
+ it "should embed when enabled" do
41
+ story = "Hello, my name is Kasper: <b><a href=\"http://www.youtube.com/watch?v=dQw4w9WgXcQ\">Look here for HalfLife3!</a><br/></b>And I am embedding links".embedda(:filters => :youtube)
42
+ expect(story).to eq("Hello, my name is Kasper: <b>#{@embed_string}<br/></b>And I am embedding links")
43
+ end
44
+
45
+ it "should not embed when disabled" do
46
+ story = "Hello, my name is Kasper: <b><a href=\"http://www.youtube.com/watch?v=dQw4w9WgXcQ\">Look here for HalfLife3!</a><br/></b>And I am embedding links".embedda(:filters => :vimeo)
47
+ expect(story).to eq("Hello, my name is Kasper: <b><a href=\"http://www.youtube.com/watch?v=dQw4w9WgXcQ\">Look here for HalfLife3!</a><br/></b>And I am embedding links")
48
+ end
39
49
  end
40
50
 
41
51
  context "Vimeo-link" do
@@ -53,7 +63,7 @@ describe "Embedda" do
53
63
  expect(story).to eq("Hello, my name is Kasper: #{@embed_string}<br/>And I am embedding links")
54
64
  end
55
65
 
56
- it "should embed when text include anchor tag to Youtube" do
66
+ it "should embed when text include anchor tag to Vimeo" do
57
67
  story = "<a href=\"http://vimeo.com/20241459\">Look here for HalfLife3!</a>".embedda
58
68
  expect(story).to eq(@embed_string)
59
69
  end
@@ -62,5 +72,42 @@ describe "Embedda" do
62
72
  story = "Hello, my name is Kasper: <a href=\"http://vimeo.com/20241459\">Look here for HalfLife3!</a><br/>And I am embedding links".embedda
63
73
  expect(story).to eq("Hello, my name is Kasper: #{@embed_string}<br/>And I am embedding links")
64
74
  end
75
+
76
+ it "should embed when enabled" do
77
+ story = "Hello, my name is Kasper: <a href=\"http://vimeo.com/20241459\">Look here for HalfLife3!</a><br/>And I am embedding links".embedda(:filters => :vimeo)
78
+ expect(story).to eq("Hello, my name is Kasper: #{@embed_string}<br/>And I am embedding links")
79
+ end
80
+
81
+ it "should not embed when disabled" do
82
+ story = "Hello, my name is Kasper: <a href=\"http://vimeo.com/20241459\">Look here for HalfLife3!</a><br/>And I am embedding links".embedda(:filters => :youtube)
83
+ expect(story).to eq("Hello, my name is Kasper: <a href=\"http://vimeo.com/20241459\">Look here for HalfLife3!</a><br/>And I am embedding links")
84
+ end
85
+ end
86
+
87
+ context "Soundcloud-link" do
88
+ before(:all) do
89
+ @embed_string = "<iframe width=\"100%\" height=\"166\" scrolling=\"no\" frameborder=\"no\" src=\"https://w.soundcloud.com/player/?url=https%3A%2F%2Fsoundcloud.com%2Fflume-1%2Fflume-left-alone-bobby-tank&color=ff6600&amp;auto_play=false&amp;show_artwork=false\"></iframe>"
90
+ @link = "https://soundcloud.com/flume-1/flume-left-alone-bobby-tank"
91
+ end
92
+
93
+ it "should embed when text have a link" do
94
+ story = @link.embedda
95
+ expect(story).to eq(@embed_string)
96
+ end
97
+
98
+ it "should embed when also other text is present around link" do
99
+ story = "Hello, my name is Takle: #{@link}<br/>And I am embedding links".embedda
100
+ expect(story).to eq("Hello, my name is Takle: #{@embed_string}<br/>And I am embedding links")
101
+ end
102
+
103
+ it "should embed when enabled" do
104
+ story = "Hello, my name is Takle: #{@link}<br/>And I am embedding links".embedda(:filters => :soundcloud)
105
+ expect(story).to eq("Hello, my name is Takle: #{@embed_string}<br/>And I am embedding links")
106
+ end
107
+
108
+ it "should not embed when disabled" do
109
+ story = "Hello, my name is Takle: #{@link}<br/>And I am not embedding links".embedda(:filters => :youtube)
110
+ expect(story).to eq("Hello, my name is Takle: #{@link}<br/>And I am not embedding links")
111
+ end
65
112
  end
66
- end
113
+ end
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embedda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kasper Grubbe
9
+ - Christian Takle
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-03-17 00:00:00.000000000 Z
13
+ date: 2013-04-09 00:00:00.000000000 Z
13
14
  dependencies: []
14
15
  description: Embed content strings in your strings, and turn it to embed HTML!
15
16
  email: