embedify 0.3.0 → 0.3.1
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/.rvmrc +1 -1
- data/Gemfile +4 -1
- data/Gemfile.lock +12 -3
- data/VERSION +1 -1
- data/embedify.gemspec +15 -6
- data/examples/embedify_server/Gemfile +4 -1
- data/examples/embedify_server/Gemfile.lock +32 -25
- data/examples/embedify_server/lib/embedify_server.rb +10 -4
- data/lib/embedify.rb +78 -70
- metadata +103 -20
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm 1.9.3@embedify
|
1
|
+
rvm 1.9.3@embedify --create
|
data/Gemfile
CHANGED
@@ -9,9 +9,12 @@ group :development do
|
|
9
9
|
gem "shoulda", ">= 0"
|
10
10
|
gem "rdoc", "~> 3.12"
|
11
11
|
gem "bundler", "~> 1.0.0"
|
12
|
-
gem "jeweler"
|
12
|
+
gem "jeweler"
|
13
13
|
gem 'rspec'
|
14
14
|
end
|
15
15
|
|
16
16
|
gem 'nokogiri', '~> 1.5.0'
|
17
|
+
gem 'hashie'
|
17
18
|
gem 'faraday'
|
19
|
+
gem 'faraday_middleware'
|
20
|
+
gem 'hashie'
|
data/Gemfile.lock
CHANGED
@@ -7,7 +7,10 @@ GEM
|
|
7
7
|
addressable (~> 2.2)
|
8
8
|
multipart-post (~> 1.1)
|
9
9
|
rack (~> 1.1)
|
10
|
+
faraday_middleware (0.8.4)
|
11
|
+
faraday (>= 0.7.4, < 0.9)
|
10
12
|
git (1.2.5)
|
13
|
+
hashie (1.2.0)
|
11
14
|
jeweler (1.8.3)
|
12
15
|
bundler (~> 1.0)
|
13
16
|
git (>= 1.2.5)
|
@@ -15,7 +18,7 @@ GEM
|
|
15
18
|
rdoc
|
16
19
|
json (1.6.5)
|
17
20
|
multipart-post (1.1.5)
|
18
|
-
nokogiri (1.5.
|
21
|
+
nokogiri (1.5.2)
|
19
22
|
rack (1.4.1)
|
20
23
|
rake (0.9.2.2)
|
21
24
|
rdoc (3.12)
|
@@ -28,7 +31,11 @@ GEM
|
|
28
31
|
rspec-expectations (2.8.0)
|
29
32
|
diff-lcs (~> 1.1.2)
|
30
33
|
rspec-mocks (2.8.0)
|
31
|
-
shoulda (
|
34
|
+
shoulda (3.0.1)
|
35
|
+
shoulda-context (~> 1.0.0)
|
36
|
+
shoulda-matchers (~> 1.0.0)
|
37
|
+
shoulda-context (1.0.0)
|
38
|
+
shoulda-matchers (1.0.0)
|
32
39
|
|
33
40
|
PLATFORMS
|
34
41
|
ruby
|
@@ -36,7 +43,9 @@ PLATFORMS
|
|
36
43
|
DEPENDENCIES
|
37
44
|
bundler (~> 1.0.0)
|
38
45
|
faraday
|
39
|
-
|
46
|
+
faraday_middleware
|
47
|
+
hashie
|
48
|
+
jeweler
|
40
49
|
nokogiri (~> 1.5.0)
|
41
50
|
rdoc (~> 3.12)
|
42
51
|
rspec
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
data/embedify.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "embedify"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tristan Gomez"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-04-18"
|
13
13
|
s.description = "Embedify is a ruby gem that parses and returns an\n embeddable version of a page, similar to how Facebook fetches and retrieves\n page data when posting a link."
|
14
14
|
s.email = "tristan.gomez+embedify@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -39,7 +39,7 @@ Gem::Specification.new do |s|
|
|
39
39
|
s.homepage = "http://github.com/parasquid/embedify"
|
40
40
|
s.licenses = ["LGPLv3"]
|
41
41
|
s.require_paths = ["lib"]
|
42
|
-
s.rubygems_version = "1.8.
|
42
|
+
s.rubygems_version = "1.8.22"
|
43
43
|
s.summary = "parses and returns an embeddable version of a page"
|
44
44
|
|
45
45
|
if s.respond_to? :specification_version then
|
@@ -47,28 +47,37 @@ Gem::Specification.new do |s|
|
|
47
47
|
|
48
48
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
49
|
s.add_runtime_dependency(%q<nokogiri>, ["~> 1.5.0"])
|
50
|
+
s.add_runtime_dependency(%q<hashie>, [">= 0"])
|
50
51
|
s.add_runtime_dependency(%q<faraday>, [">= 0"])
|
52
|
+
s.add_runtime_dependency(%q<faraday_middleware>, [">= 0"])
|
53
|
+
s.add_runtime_dependency(%q<hashie>, [">= 0"])
|
51
54
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
52
55
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
53
56
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
54
|
-
s.add_development_dependency(%q<jeweler>, ["
|
57
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
55
58
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
56
59
|
else
|
57
60
|
s.add_dependency(%q<nokogiri>, ["~> 1.5.0"])
|
61
|
+
s.add_dependency(%q<hashie>, [">= 0"])
|
58
62
|
s.add_dependency(%q<faraday>, [">= 0"])
|
63
|
+
s.add_dependency(%q<faraday_middleware>, [">= 0"])
|
64
|
+
s.add_dependency(%q<hashie>, [">= 0"])
|
59
65
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
60
66
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
61
67
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
62
|
-
s.add_dependency(%q<jeweler>, ["
|
68
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
63
69
|
s.add_dependency(%q<rspec>, [">= 0"])
|
64
70
|
end
|
65
71
|
else
|
66
72
|
s.add_dependency(%q<nokogiri>, ["~> 1.5.0"])
|
73
|
+
s.add_dependency(%q<hashie>, [">= 0"])
|
67
74
|
s.add_dependency(%q<faraday>, [">= 0"])
|
75
|
+
s.add_dependency(%q<faraday_middleware>, [">= 0"])
|
76
|
+
s.add_dependency(%q<hashie>, [">= 0"])
|
68
77
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
69
78
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
70
79
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
71
|
-
s.add_dependency(%q<jeweler>, ["
|
80
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
72
81
|
s.add_dependency(%q<rspec>, [">= 0"])
|
73
82
|
end
|
74
83
|
end
|
@@ -1,7 +1,10 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
2
|
|
3
3
|
gem 'sinatra'
|
4
|
-
gem 'embedify',
|
4
|
+
gem 'embedify', path: '../../'
|
5
5
|
gem 'shotgun'
|
6
6
|
gem 'thin'
|
7
7
|
gem 'sinatra-jsonp', :require => 'sinatra/jsonp'
|
8
|
+
gem 'em-synchrony'
|
9
|
+
gem 'em-http-request'
|
10
|
+
gem 'sinatra-synchrony'
|
@@ -1,37 +1,35 @@
|
|
1
|
-
|
2
|
-
remote:
|
3
|
-
revision: 419b8f4d84975bfcb69e7b3804ab8135e8a585e7
|
1
|
+
PATH
|
2
|
+
remote: ../../
|
4
3
|
specs:
|
5
|
-
embedify (0.
|
6
|
-
|
7
|
-
nokogiri
|
8
|
-
opengraph
|
9
|
-
|
10
|
-
GIT
|
11
|
-
remote: git://github.com/parasquid/opengraph.git
|
12
|
-
revision: dbcfc27a40be6b4681bfd55c31b767ecf685ff96
|
13
|
-
specs:
|
14
|
-
opengraph (0.0.4)
|
15
|
-
hashie
|
16
|
-
httparty
|
17
|
-
httparty (~> 0.8.1)
|
18
|
-
nokogiri
|
4
|
+
embedify (0.3.0)
|
5
|
+
faraday
|
19
6
|
nokogiri (~> 1.5.0)
|
20
7
|
|
21
8
|
GEM
|
22
9
|
remote: http://rubygems.org/
|
23
10
|
specs:
|
11
|
+
addressable (2.2.7)
|
12
|
+
async-rack (0.5.1)
|
13
|
+
rack (~> 1.1)
|
24
14
|
daemons (1.1.8)
|
15
|
+
em-http-request (0.3.0)
|
16
|
+
addressable (>= 2.0.0)
|
17
|
+
escape_utils
|
18
|
+
eventmachine (>= 0.12.9)
|
19
|
+
em-resolv-replace (1.1.2)
|
20
|
+
em-synchrony (0.2.0)
|
21
|
+
eventmachine (>= 0.12.9)
|
22
|
+
escape_utils (0.2.4)
|
25
23
|
eventmachine (0.12.10)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
faraday (0.7.6)
|
25
|
+
addressable (~> 2.2)
|
26
|
+
multipart-post (~> 1.1)
|
27
|
+
rack (~> 1.1)
|
30
28
|
json_pure (1.6.5)
|
31
|
-
|
32
|
-
|
33
|
-
nokogiri (1.5.0)
|
29
|
+
multipart-post (1.1.5)
|
30
|
+
nokogiri (1.5.2)
|
34
31
|
rack (1.4.1)
|
32
|
+
rack-fiber_pool (0.9.1)
|
35
33
|
rack-protection (1.2.0)
|
36
34
|
rack
|
37
35
|
shotgun (0.9)
|
@@ -43,6 +41,13 @@ GEM
|
|
43
41
|
sinatra-jsonp (0.3.2)
|
44
42
|
json_pure (~> 1.4)
|
45
43
|
sinatra (~> 1.0)
|
44
|
+
sinatra-synchrony (0.1.1)
|
45
|
+
async-rack
|
46
|
+
em-http-request (= 0.3.0)
|
47
|
+
em-resolv-replace
|
48
|
+
em-synchrony (= 0.2.0)
|
49
|
+
rack-fiber_pool (= 0.9.1)
|
50
|
+
sinatra (>= 1.0)
|
46
51
|
thin (1.3.1)
|
47
52
|
daemons (>= 1.0.9)
|
48
53
|
eventmachine (>= 0.12.6)
|
@@ -53,9 +58,11 @@ PLATFORMS
|
|
53
58
|
ruby
|
54
59
|
|
55
60
|
DEPENDENCIES
|
61
|
+
em-http-request
|
62
|
+
em-synchrony
|
56
63
|
embedify!
|
57
|
-
opengraph!
|
58
64
|
shotgun
|
59
65
|
sinatra
|
60
66
|
sinatra-jsonp
|
67
|
+
sinatra-synchrony
|
61
68
|
thin
|
@@ -1,14 +1,20 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path('../../lib')
|
2
|
+
|
1
3
|
require 'sinatra/base'
|
4
|
+
require 'sinatra/synchrony'
|
2
5
|
require "sinatra/jsonp"
|
3
6
|
require 'json'
|
4
7
|
require 'cgi'
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
+
require 'em-synchrony'
|
9
|
+
require 'em-synchrony/em-http'
|
8
10
|
require 'embedify'
|
9
|
-
|
11
|
+
|
12
|
+
Faraday.default_adapter = :em_synchrony
|
10
13
|
|
11
14
|
class EmbedifyServer < Sinatra::Base
|
15
|
+
|
16
|
+
register Sinatra::Synchrony
|
17
|
+
|
12
18
|
helpers Sinatra::Jsonp
|
13
19
|
enable :sessions
|
14
20
|
set :session_secret, "My session secret"
|
data/lib/embedify.rb
CHANGED
@@ -1,68 +1,18 @@
|
|
1
|
-
$:.unshift(File.expand_path(File.dirname(__FILE__))) unless $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
2
|
-
|
3
1
|
require 'nokogiri'
|
4
2
|
require 'faraday'
|
5
3
|
require 'hashie'
|
6
4
|
|
7
5
|
module Embedify
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
'business' => %w(bar company cafe hotel restaurant),
|
12
|
-
'group' => %w(cause sports_league sports_team),
|
13
|
-
'organization' => %w(band government non_profit school university),
|
14
|
-
'person' => %w(actor athlete author director musician politician public_figure),
|
15
|
-
'place' => %w(city country landmark state_province),
|
16
|
-
'product' => %w(album book drink food game movie product song tv_show),
|
17
|
-
'website' => %w(blog website)
|
18
|
-
}
|
19
|
-
|
20
|
-
# The OpenGraph::Object is a Hash with method accessors for
|
21
|
-
# all detected Open Graph attributes.
|
22
|
-
class Object < Hashie::Mash
|
23
|
-
MANDATORY_ATTRIBUTES = %w(title type image url)
|
24
|
-
|
25
|
-
# The object type.
|
26
|
-
def type
|
27
|
-
self['type']
|
28
|
-
end
|
29
|
-
|
30
|
-
# The schema under which this particular object lies. May be any of
|
31
|
-
# the keys of the TYPES constant.
|
32
|
-
def schema
|
33
|
-
Embedify::TYPES.each_pair do |schema, types|
|
34
|
-
return schema if types.include?(self.type)
|
35
|
-
end
|
36
|
-
nil
|
37
|
-
end
|
38
|
-
|
39
|
-
Embedify::TYPES.values.flatten.each do |type|
|
40
|
-
define_method "#{type}?" do
|
41
|
-
self.type == type
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
Embedify::TYPES.keys.each do |scheme|
|
46
|
-
define_method "#{scheme}?" do
|
47
|
-
self.type == scheme || OpenGraph::TYPES[scheme].include?(self.type)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
# If the Open Graph information for this object doesn't contain
|
52
|
-
# the mandatory attributes, this will be <tt>false</tt>.
|
53
|
-
def valid?
|
54
|
-
MANDATORY_ATTRIBUTES.each{|a| return false unless (self[a] && !self[a].empty?)}
|
55
|
-
true
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
7
|
+
# Fetch Open Graph data from the specified URI. Makes an
|
8
|
+
# HTTP GET request and returns an OpenGraph::Object
|
59
9
|
def self.fetch(uri, options = {})
|
60
10
|
opengraph = begin
|
61
|
-
html =
|
62
|
-
page = parse(html.body
|
63
|
-
page['url'] = html.
|
11
|
+
html = get_with_redirects(uri)
|
12
|
+
page = parse(html.body)
|
13
|
+
page['url'] = html.env[:url].to_s unless page.include? 'url'
|
64
14
|
page
|
65
|
-
rescue
|
15
|
+
rescue Exception => e
|
66
16
|
raise e
|
67
17
|
end
|
68
18
|
|
@@ -85,7 +35,19 @@ module Embedify
|
|
85
35
|
|
86
36
|
private
|
87
37
|
|
88
|
-
def self.
|
38
|
+
def self.get_with_redirects(uri, iterations = 0)
|
39
|
+
html = Faraday.get(uri)
|
40
|
+
#raise html.env[:response_headers]['Location']
|
41
|
+
puts "#{iterations.inspect} #{html.env[:response_headers]['Location']}"
|
42
|
+
case html.status
|
43
|
+
when 301..307
|
44
|
+
html = get_with_redirects(html.env[:response_headers]['Location'], iterations + 1)
|
45
|
+
else
|
46
|
+
html
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.parse(html)
|
89
51
|
doc = Nokogiri::HTML.parse(html)
|
90
52
|
page = Embedify::Object.new
|
91
53
|
doc.css('meta').each do |m|
|
@@ -98,7 +60,14 @@ module Embedify
|
|
98
60
|
end
|
99
61
|
|
100
62
|
def self.title(document)
|
101
|
-
document['title']
|
63
|
+
unless document['title']
|
64
|
+
title_tags = document[:nokogiri_parsed_document].css('title')
|
65
|
+
if title_tags.count > 0
|
66
|
+
document['title'] = title_tags.first.inner_text
|
67
|
+
else
|
68
|
+
document.delete 'title'
|
69
|
+
end
|
70
|
+
end
|
102
71
|
end
|
103
72
|
|
104
73
|
def self.type(document)
|
@@ -120,25 +89,64 @@ module Embedify
|
|
120
89
|
end
|
121
90
|
end
|
122
91
|
|
123
|
-
|
124
|
-
|
92
|
+
p_tags = document[:nokogiri_parsed_document].css('p')
|
93
|
+
if p_tags.count > 0
|
94
|
+
document['description'] = p_tags.first.inner_text.to_s
|
95
|
+
else
|
96
|
+
document.delete 'description'
|
97
|
+
end
|
125
98
|
end
|
126
99
|
|
127
|
-
end
|
128
100
|
|
129
101
|
|
102
|
+
TYPES = {
|
103
|
+
'activity' => %w(activity sport),
|
104
|
+
'business' => %w(bar company cafe hotel restaurant),
|
105
|
+
'group' => %w(cause sports_league sports_team),
|
106
|
+
'organization' => %w(band government non_profit school university),
|
107
|
+
'person' => %w(actor athlete author director musician politician public_figure),
|
108
|
+
'place' => %w(city country landmark state_province),
|
109
|
+
'product' => %w(album book drink food game movie product song tv_show),
|
110
|
+
'website' => %w(blog website)
|
111
|
+
}
|
130
112
|
|
113
|
+
# The OpenGraph::Object is a Hash with method accessors for
|
114
|
+
# all detected Open Graph attributes.
|
115
|
+
class Object < Hashie::Mash
|
116
|
+
MANDATORY_ATTRIBUTES = %w(title type image url)
|
131
117
|
|
132
|
-
|
133
|
-
|
118
|
+
# The object type.
|
119
|
+
def type
|
120
|
+
self['type']
|
121
|
+
end
|
134
122
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
123
|
+
# The schema under which this particular object lies. May be any of
|
124
|
+
# the keys of the TYPES constant.
|
125
|
+
def schema
|
126
|
+
Embedify::TYPES.each_pair do |schema, types|
|
127
|
+
return schema if types.include?(self.type)
|
128
|
+
end
|
129
|
+
nil
|
130
|
+
end
|
131
|
+
|
132
|
+
Embedify::TYPES.values.flatten.each do |type|
|
133
|
+
define_method "#{type}?" do
|
134
|
+
self.type == type
|
135
|
+
end
|
136
|
+
end
|
142
137
|
|
138
|
+
Embedify::TYPES.keys.each do |scheme|
|
139
|
+
define_method "#{scheme}?" do
|
140
|
+
self.type == scheme || Embedify::TYPES[scheme].include?(self.type)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
# If the Open Graph information for this object doesn't contain
|
145
|
+
# the mandatory attributes, this will be <tt>false</tt>.
|
146
|
+
def valid?
|
147
|
+
MANDATORY_ATTRIBUTES.each{|a| return false unless (self[a] && !self[a].empty?)}
|
148
|
+
true
|
149
|
+
end
|
150
|
+
end
|
143
151
|
|
144
152
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embedify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,31 @@ dependencies:
|
|
21
21
|
version: 1.5.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.5.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: hashie
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
25
46
|
- !ruby/object:Gem::Dependency
|
26
47
|
name: faraday
|
27
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
28
49
|
none: false
|
29
50
|
requirements:
|
30
51
|
- - ! '>='
|
@@ -32,10 +53,47 @@ dependencies:
|
|
32
53
|
version: '0'
|
33
54
|
type: :runtime
|
34
55
|
prerelease: false
|
35
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: faraday_middleware
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: hashie
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
36
94
|
- !ruby/object:Gem::Dependency
|
37
95
|
name: shoulda
|
38
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
39
97
|
none: false
|
40
98
|
requirements:
|
41
99
|
- - ! '>='
|
@@ -43,10 +101,15 @@ dependencies:
|
|
43
101
|
version: '0'
|
44
102
|
type: :development
|
45
103
|
prerelease: false
|
46
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
47
110
|
- !ruby/object:Gem::Dependency
|
48
111
|
name: rdoc
|
49
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
50
113
|
none: false
|
51
114
|
requirements:
|
52
115
|
- - ~>
|
@@ -54,10 +117,15 @@ dependencies:
|
|
54
117
|
version: '3.12'
|
55
118
|
type: :development
|
56
119
|
prerelease: false
|
57
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '3.12'
|
58
126
|
- !ruby/object:Gem::Dependency
|
59
127
|
name: bundler
|
60
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
61
129
|
none: false
|
62
130
|
requirements:
|
63
131
|
- - ~>
|
@@ -65,21 +133,31 @@ dependencies:
|
|
65
133
|
version: 1.0.0
|
66
134
|
type: :development
|
67
135
|
prerelease: false
|
68
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.0.0
|
69
142
|
- !ruby/object:Gem::Dependency
|
70
143
|
name: jeweler
|
71
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
72
145
|
none: false
|
73
146
|
requirements:
|
74
|
-
- -
|
147
|
+
- - ! '>='
|
75
148
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
149
|
+
version: '0'
|
77
150
|
type: :development
|
78
151
|
prerelease: false
|
79
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
80
158
|
- !ruby/object:Gem::Dependency
|
81
159
|
name: rspec
|
82
|
-
requirement:
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
83
161
|
none: false
|
84
162
|
requirements:
|
85
163
|
- - ! '>='
|
@@ -87,7 +165,12 @@ dependencies:
|
|
87
165
|
version: '0'
|
88
166
|
type: :development
|
89
167
|
prerelease: false
|
90
|
-
version_requirements:
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
91
174
|
description: ! "Embedify is a ruby gem that parses and returns an\n embeddable
|
92
175
|
version of a page, similar to how Facebook fetches and retrieves\n page data
|
93
176
|
when posting a link."
|
@@ -131,7 +214,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
131
214
|
version: '0'
|
132
215
|
segments:
|
133
216
|
- 0
|
134
|
-
hash: -
|
217
|
+
hash: -400433983158747791
|
135
218
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
136
219
|
none: false
|
137
220
|
requirements:
|
@@ -140,7 +223,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
223
|
version: '0'
|
141
224
|
requirements: []
|
142
225
|
rubyforge_project:
|
143
|
-
rubygems_version: 1.8.
|
226
|
+
rubygems_version: 1.8.22
|
144
227
|
signing_key:
|
145
228
|
specification_version: 3
|
146
229
|
summary: parses and returns an embeddable version of a page
|