embedda 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -11,6 +11,7 @@ spec/reports
11
11
  test/tmp
12
12
  test/version_tmp
13
13
  tmp
14
+ Gemfile.lock
14
15
 
15
16
  # YARD artifacts
16
17
  .yardoc
data/README.md CHANGED
@@ -38,6 +38,13 @@ This is the default behavoir:
38
38
  ```ruby
39
39
  [2] pry(main)> "String heheh http://www.youtube.com/watch?v=BVtYSy83XXw yeah".embedda(:filters => [:youtube, :vimeo])
40
40
  => "String heheh <iframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/BVtYSy83XXw\" frameborder=\"0\" allowfullscreen></iframe> yeah"
41
+ ```
42
+
43
+ You can enforce https URLs (useful on SSL-secured sites):
44
+
45
+ ```ruby
46
+ [2] pry(main)> "String heheh http://www.youtube.com/watch?v=BVtYSy83XXw yeah".embedda(ssl: true)
47
+ => "String heheh <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/BVtYSy83XXw\" frameborder=\"0\" allowfullscreen></iframe> yeah"
41
48
  ```
42
49
 
43
50
  ## Supported embeds
@@ -50,4 +57,4 @@ Currently embedda can embed the following formats:
50
57
 
51
58
  ## Links
52
59
 
53
- Rubygems: https://rubygems.org/gems/embedda
60
+ Rubygems: https://rubygems.org/gems/embedda
@@ -3,7 +3,7 @@ $:.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.3'
6
+ gem.version = '0.0.4'
7
7
  gem.authors = ["Kasper Grubbe",'Christian Takle']
8
8
  gem.email = ["kaspergrubbe@gmail.com"]
9
9
  gem.homepage = "http://github.com/kaspergrubbe/embedda"
@@ -1,49 +1,59 @@
1
1
  require 'cgi'
2
2
 
3
- class String
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])
3
+ class Embedda
4
+ class UnknownFilter < StandardError
5
+ def initialize(name)
6
+ super "Unknown filter #{name}"
7
+ end
8
+ end
10
9
 
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)
10
+ def initialize(string, options = {})
11
+ options = {:filters => [:youtube, :vimeo, :soundcloud]}.merge(options)
12
+ @filters = Array(options[:filters])
13
+ @protocol = options[:ssl] ? 'https' : 'http'
14
+ @string = string
15
+ end
15
16
 
16
- return compiled
17
+ def embed
18
+ return "" if @string.to_s.empty?
19
+ @filters.each do |filter_name|
20
+ begin
21
+ @string = send("#{filter_name}_replace", @string)
22
+ rescue NoMethodError
23
+ raise UnknownFilter.new(filter_name)
24
+ end
25
+ end
26
+ @string
17
27
  end
18
28
 
19
- private
29
+ private
30
+
20
31
  def youtube_replace(compiled)
21
- compiled.gsub!(/<a[^>]*?youtube\.com\/watch\?v=([a-zA-Z0-9\-\_]+).*?<\/a>/i, youtube_player("\\1"))
22
- compiled.gsub!(/[http|https]+:\/\/(?:www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9\-\_]+)\w*/i, youtube_player("\\1"))
32
+ compiled.gsub!(/(<a[^>]*?youtube\.com\/watch\?v=([a-zA-Z0-9\-\_]+).*?<\/a>)/i) { |m| youtube_player($2) }
33
+ compiled.gsub!(/([http|https]+:\/\/(?:www\.)?youtube\.com\/watch\?v=([a-zA-Z0-9\-\_]+)\w*)/i) { |m| youtube_player($2) }
23
34
 
24
35
  return compiled
25
36
  end
26
37
  def youtube_player(token)
27
- "<iframe width=\"560\" height=\"315\" src=\"http://www.youtube.com/embed/#{token}\" frameborder=\"0\" allowfullscreen></iframe>"
38
+ "<iframe width=\"560\" height=\"315\" src=\"#{@protocol}://www.youtube.com/embed/#{token}\" frameborder=\"0\" allowfullscreen></iframe>"
28
39
  end
29
40
 
30
41
  def vimeo_replace(compiled)
31
- compiled.gsub!(/<a[^>]*?vimeo\.com\/(\d+).*?<\/a>/i, vimeo_player("\\1"))
32
- compiled.gsub!(/[http|https]+:\/\/(?:www\.)?vimeo\.com\/(\d+)\w*/i, vimeo_player("\\1"))
42
+ compiled.gsub!(/(<a[^>]*?vimeo\.com\/(\d+).*?<\/a>)/i) { |m| vimeo_player($2) }
43
+ compiled.gsub!(/([http|https]+:\/\/(?:www\.)?vimeo\.com\/(\d+)\w*)/i) { |m| vimeo_player($2) }
33
44
 
34
45
  return compiled
35
46
  end
36
47
  def vimeo_player(token)
37
- "<iframe src=\"http://player.vimeo.com/video/#{token}\" width=\"500\" height=\"281\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>"
48
+ "<iframe src=\"#{@protocol}://player.vimeo.com/video/#{token}\" width=\"500\" height=\"281\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>"
38
49
  end
39
50
 
40
51
  def soundcloud_replace(compiled)
41
52
  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) }
53
+ compiled.gsub!(r) { |m| soundcloud_player(m) }
43
54
 
44
55
  return compiled
45
56
  end
46
-
47
57
  def soundcloud_player(token)
48
58
  url_encoded_string = CGI::escape(token)
49
59
 
@@ -0,0 +1,7 @@
1
+ require 'embedda'
2
+
3
+ class String
4
+ def embedda(options = {})
5
+ Embedda.new(self, options).embed
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+ require 'embedda/core_ext'
3
+
4
+ describe String do
5
+ it 'should have #embedda method' do
6
+ expect(described_class.new).to respond_to(:embedda)
7
+ end
8
+
9
+ context '#embedda' do
10
+ let(:embed_string) { '<iframe width="560" height="315" src="http://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>' }
11
+ let(:media_link) { 'http://www.youtube.com/watch?v=dQw4w9WgXcQ' }
12
+
13
+ it 'should embed media' do
14
+ expect(media_link.embedda).to eq(embed_string)
15
+ end
16
+ end
17
+ end
18
+
@@ -1,113 +1,172 @@
1
1
  require "spec_helper"
2
- require 'embedda'
2
+ require "embedda"
3
+
4
+ describe Embedda do
5
+ let(:embedda) { described_class.new(@story).embed }
3
6
 
4
- describe "Embedda" do
5
7
  context "Youtube-link" do
6
- before(:all) do
7
- @embed_string = '<iframe width="560" height="315" src="http://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>'
8
- end
8
+ let(:embed_string) { '<iframe width="560" height="315" src="http://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>' }
9
+ let(:https_embed_string) { '<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>' }
9
10
 
10
11
  it "should embed when text have a link" do
11
- story = "http://www.youtube.com/watch?v=dQw4w9WgXcQ".embedda
12
- expect(story).to eq(@embed_string)
12
+ @story = "http://www.youtube.com/watch?v=dQw4w9WgXcQ"
13
+ expect(embedda).to eq(embed_string)
13
14
  end
14
15
 
15
16
  it "should embed when text have a link with feature_embed" do
16
- story = "http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ".embedda
17
- # expect(story).to eq(@embed_string)
17
+ @story = "http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ"
18
+ pending
19
+ expect(embedda).to eq(embed_string)
18
20
  end
19
21
 
20
22
  it "should embed when also other text is present around link" do
21
- story = "Hello, my name is Kasper: http://www.youtube.com/watch?v=dQw4w9WgXcQ<br/>And I am embedding links".embedda
22
- expect(story).to eq("Hello, my name is Kasper: #{@embed_string}<br/>And I am embedding links")
23
+ @story = 'Hello, my name is Kasper: http://www.youtube.com/watch?v=dQw4w9WgXcQ<br/>And I am embedding links'
24
+ expect(embedda).to eq("Hello, my name is Kasper: #{embed_string}<br/>And I am embedding links")
23
25
  end
24
26
 
25
27
  it "should embed when text include anchor tag to Youtube" do
26
- story = "<a href=\"http://www.youtube.com/watch?v=dQw4w9WgXcQ\">Look here for HalfLife3!</a>".embedda
27
- expect(story).to eq(@embed_string)
28
+ @story = '<a href="http://www.youtube.com/watch?v=dQw4w9WgXcQ">Look here for HalfLife3!</a>'
29
+ expect(embedda).to eq(embed_string)
28
30
  end
29
31
 
30
32
  it "should embed when also other text is present around anchor tag" do
31
- 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
32
- expect(story).to eq("Hello, my name is Kasper: <b>#{@embed_string}<br/></b>And I am embedding links")
33
+ @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'
34
+ expect(embedda).to eq("Hello, my name is Kasper: <b>#{embed_string}<br/></b>And I am embedding links")
33
35
  end
34
36
 
35
37
  it "should embed when content is around the link" do
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
- expect(story).to eq("\n\nMy suggestions for getting ready for the dreadful monday we all hate:\n\n#{@embed_string}\n\n")
38
+ @story = "\n\nMy suggestions for getting ready for the dreadful monday we all hate:\n\nhttp://www.youtube.com/watch?v=dQw4w9WgXcQ\n\n"
39
+ expect(embedda).to eq("\n\nMy suggestions for getting ready for the dreadful monday we all hate:\n\n#{embed_string}\n\n")
38
40
  end
39
41
 
40
42
  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
+ @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'
44
+ embedda = described_class.new(@story, :filters => :youtube).embed
45
+ expect(embedda).to eq("Hello, my name is Kasper: <b>#{embed_string}<br/></b>And I am embedding links")
43
46
  end
44
47
 
45
48
  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")
49
+ @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'
50
+ embedda = described_class.new(@story, :filters => :vimeo).embed
51
+ expect(embedda).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')
52
+ end
53
+
54
+ it 'should output a https link if ssl option is given' do
55
+ @story = "http://www.youtube.com/watch?v=dQw4w9WgXcQ"
56
+ expect(described_class.new(@story, :ssl => true).embed).to eq(https_embed_string)
48
57
  end
49
58
  end
50
59
 
51
60
  context "Vimeo-link" do
52
- before(:all) do
53
- @embed_string = "<iframe src=\"http://player.vimeo.com/video/20241459\" width=\"500\" height=\"281\" frameborder=\"0\" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>"
54
- end
61
+ let(:embed_string) { '<iframe src="http://player.vimeo.com/video/20241459" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>' }
62
+ let(:https_embed_string) { '<iframe src="https://player.vimeo.com/video/20241459" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>' }
55
63
 
56
64
  it "should embed when text have a link" do
57
- story = "http://vimeo.com/20241459".embedda
58
- expect(story).to eq(@embed_string)
65
+ @story = "http://vimeo.com/20241459"
66
+ expect(embedda).to eq(embed_string)
59
67
  end
60
68
 
61
69
  it "should embed when also other text is present around link" do
62
- story = "Hello, my name is Kasper: http://vimeo.com/20241459<br/>And I am embedding links".embedda
63
- expect(story).to eq("Hello, my name is Kasper: #{@embed_string}<br/>And I am embedding links")
70
+ @story = 'Hello, my name is Kasper: http://vimeo.com/20241459<br/>And I am embedding links'
71
+ expect(embedda).to eq("Hello, my name is Kasper: #{embed_string}<br/>And I am embedding links")
64
72
  end
65
73
 
66
74
  it "should embed when text include anchor tag to Vimeo" do
67
- story = "<a href=\"http://vimeo.com/20241459\">Look here for HalfLife3!</a>".embedda
68
- expect(story).to eq(@embed_string)
75
+ @story = '<a href="http://vimeo.com/20241459">Look here for HalfLife3!</a>'
76
+ expect(embedda).to eq(embed_string)
69
77
  end
70
78
 
71
79
  it "should embed when also other text is present around anchor tag" do
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
73
- expect(story).to eq("Hello, my name is Kasper: #{@embed_string}<br/>And I am embedding links")
80
+ @story = 'Hello, my name is Kasper: <a href="http://vimeo.com/20241459">Look here for HalfLife3!</a><br/>And I am embedding links'
81
+ expect(embedda).to eq("Hello, my name is Kasper: #{embed_string}<br/>And I am embedding links")
74
82
  end
75
83
 
76
84
  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")
85
+ @story = 'Hello, my name is Kasper: <a href="http://vimeo.com/20241459">Look here for HalfLife3!</a><br/>And I am embedding links'
86
+ embedda = described_class.new(@story, :filters => :vimeo).embed
87
+ expect(embedda).to eq("Hello, my name is Kasper: #{embed_string}<br/>And I am embedding links")
79
88
  end
80
89
 
81
90
  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")
91
+ @story = 'Hello, my name is Kasper: <a href="http://vimeo.com/20241459">Look here for HalfLife3!</a><br/>And I am embedding links'
92
+ embedda = described_class.new(@story, :filters => :youtube).embed
93
+ expect(embedda).to eq('Hello, my name is Kasper: <a href="http://vimeo.com/20241459">Look here for HalfLife3!</a><br/>And I am embedding links')
94
+ end
95
+
96
+ it 'should output a https link if ssl option is given' do
97
+ @story = "http://vimeo.com/20241459"
98
+ expect(described_class.new(@story, :ssl => true).embed).to eq(https_embed_string)
84
99
  end
85
100
  end
86
101
 
87
102
  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
103
+ let(: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>' }
104
+ let(:link) { 'https://soundcloud.com/flume-1/flume-left-alone-bobby-tank' }
92
105
 
93
106
  it "should embed when text have a link" do
94
- story = @link.embedda
95
- expect(story).to eq(@embed_string)
107
+ @story = link
108
+ expect(embedda).to eq(embed_string)
96
109
  end
97
110
 
98
111
  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")
112
+ @story = "Hello, my name is Takle: #{link}<br/>And I am embedding links"
113
+ expect(embedda).to eq("Hello, my name is Takle: #{embed_string}<br/>And I am embedding links")
101
114
  end
102
115
 
103
116
  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")
117
+ @story = "Hello, my name is Takle: #{link}<br/>And I am embedding links"
118
+ embedda = described_class.new(@story, :filters => :soundcloud).embed
119
+ expect(embedda).to eq("Hello, my name is Takle: #{embed_string}<br/>And I am embedding links")
106
120
  end
107
121
 
108
122
  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")
123
+ @story = "Hello, my name is Takle: #{link}<br/>And I am not embedding links"
124
+ embedda = described_class.new(@story, :filters => :youtube).embed
125
+ expect(embedda).to eq("Hello, my name is Takle: #{link}<br/>And I am not embedding links")
111
126
  end
112
127
  end
128
+
129
+ context "All embeds in one string" do
130
+ let(:youtube) { '<iframe width="560" height="315" src="http://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>' }
131
+ let(:youtube_link) { 'http://www.youtube.com/watch?v=dQw4w9WgXcQ' }
132
+ let(:vimeo) { '<iframe src="http://player.vimeo.com/video/20241459" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>' }
133
+ let(:vimeo_link) { 'http://vimeo.com/20241459' }
134
+ let(:soundcloud) { '<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>' }
135
+ let(:soundcloud_link) { 'https://soundcloud.com/flume-1/flume-left-alone-bobby-tank' }
136
+
137
+ it "should show two youtube embeds" do
138
+ @story = "#{youtube_link} #{youtube_link}"
139
+ expect(embedda).to eq("#{youtube} #{youtube}")
140
+ end
141
+
142
+ it "should show two vimeo embeds" do
143
+ @story = "#{vimeo_link} #{vimeo_link}"
144
+ expect(embedda).to eq("#{vimeo} #{vimeo}")
145
+ end
146
+
147
+ it "should show two soundcloud embeds" do
148
+ @story = "#{soundcloud_link} #{soundcloud_link}"
149
+ expect(embedda).to eq("#{soundcloud} #{soundcloud}")
150
+ end
151
+
152
+ it "should show all the embeds in the @story" do
153
+ @story = "#{youtube_link} #{vimeo_link} #{soundcloud_link}"
154
+ expect(embedda).to eq("#{youtube} #{vimeo} #{soundcloud}")
155
+ end
156
+ end
157
+
158
+ context "Unkown filter" do
159
+ it "should refuse to embed when unknown filter passed" do
160
+ story = "http://www.youtube.com/watch?v=dQw4w9WgXcQ"
161
+ expect { described_class.new(story, :filters => [:dummy]).embed }.to raise_error(Embedda::UnknownFilter)
162
+ end
163
+ end
164
+
165
+ context "Empty string" do
166
+ it "should return empty string" do
167
+ @story = ""
168
+ expect(embedda).to eq("")
169
+ end
170
+ end
171
+
113
172
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embedda
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-04-09 00:00:00.000000000 Z
13
+ date: 2013-08-06 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: Embed content strings in your strings, and turn it to embed HTML!
16
16
  email:
@@ -28,6 +28,8 @@ files:
28
28
  - Rakefile.rb
29
29
  - embedda.gemspec
30
30
  - lib/embedda.rb
31
+ - lib/embedda/core_ext.rb
32
+ - spec/embedda_core_ext_spec.rb
31
33
  - spec/embedda_spec.rb
32
34
  - spec/spec_helper.rb
33
35
  homepage: http://github.com/kaspergrubbe/embedda
@@ -55,5 +57,7 @@ signing_key:
55
57
  specification_version: 3
56
58
  summary: Embed content strings in your strings, and turn it to embed HTML!
57
59
  test_files:
60
+ - spec/embedda_core_ext_spec.rb
58
61
  - spec/embedda_spec.rb
59
62
  - spec/spec_helper.rb
63
+ has_rdoc: