embedify 0.4.0 → 0.5.0

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.
Files changed (6) hide show
  1. data/Gemfile +3 -1
  2. data/Gemfile.lock +4 -1
  3. data/VERSION +1 -1
  4. data/embedify.gemspec +10 -4
  5. data/lib/embedify.rb +33 -3
  6. metadata +38 -6
data/Gemfile CHANGED
@@ -8,7 +8,7 @@ source "http://rubygems.org"
8
8
  group :development do
9
9
  gem "shoulda", ">= 0"
10
10
  gem "rdoc", "~> 3.12"
11
- gem "bundler", "~> 1.0.0"
11
+ gem "bundler"
12
12
  gem "jeweler"
13
13
  gem 'rspec'
14
14
  end
@@ -18,3 +18,5 @@ gem 'hashie'
18
18
  gem 'faraday'
19
19
  gem 'faraday_middleware'
20
20
  gem 'hashie'
21
+ gem 'addressable'
22
+ gem 'fastimage'
data/Gemfile.lock CHANGED
@@ -9,6 +9,7 @@ GEM
9
9
  rack (~> 1.1)
10
10
  faraday_middleware (0.8.4)
11
11
  faraday (>= 0.7.4, < 0.9)
12
+ fastimage (1.2.13)
12
13
  git (1.2.5)
13
14
  hashie (1.2.0)
14
15
  jeweler (1.8.3)
@@ -41,9 +42,11 @@ PLATFORMS
41
42
  ruby
42
43
 
43
44
  DEPENDENCIES
44
- bundler (~> 1.0.0)
45
+ addressable
46
+ bundler
45
47
  faraday
46
48
  faraday_middleware
49
+ fastimage
47
50
  hashie
48
51
  jeweler
49
52
  nokogiri (~> 1.5.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.5.0
data/embedify.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "embedify"
8
- s.version = "0.4.0"
8
+ s.version = "0.5.0"
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"]
@@ -51,9 +51,11 @@ Gem::Specification.new do |s|
51
51
  s.add_runtime_dependency(%q<faraday>, [">= 0"])
52
52
  s.add_runtime_dependency(%q<faraday_middleware>, [">= 0"])
53
53
  s.add_runtime_dependency(%q<hashie>, [">= 0"])
54
+ s.add_runtime_dependency(%q<addressable>, [">= 0"])
55
+ s.add_runtime_dependency(%q<fastimage>, [">= 0"])
54
56
  s.add_development_dependency(%q<shoulda>, [">= 0"])
55
57
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
56
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
58
+ s.add_development_dependency(%q<bundler>, [">= 0"])
57
59
  s.add_development_dependency(%q<jeweler>, [">= 0"])
58
60
  s.add_development_dependency(%q<rspec>, [">= 0"])
59
61
  else
@@ -62,9 +64,11 @@ Gem::Specification.new do |s|
62
64
  s.add_dependency(%q<faraday>, [">= 0"])
63
65
  s.add_dependency(%q<faraday_middleware>, [">= 0"])
64
66
  s.add_dependency(%q<hashie>, [">= 0"])
67
+ s.add_dependency(%q<addressable>, [">= 0"])
68
+ s.add_dependency(%q<fastimage>, [">= 0"])
65
69
  s.add_dependency(%q<shoulda>, [">= 0"])
66
70
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
67
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
71
+ s.add_dependency(%q<bundler>, [">= 0"])
68
72
  s.add_dependency(%q<jeweler>, [">= 0"])
69
73
  s.add_dependency(%q<rspec>, [">= 0"])
70
74
  end
@@ -74,9 +78,11 @@ Gem::Specification.new do |s|
74
78
  s.add_dependency(%q<faraday>, [">= 0"])
75
79
  s.add_dependency(%q<faraday_middleware>, [">= 0"])
76
80
  s.add_dependency(%q<hashie>, [">= 0"])
81
+ s.add_dependency(%q<addressable>, [">= 0"])
82
+ s.add_dependency(%q<fastimage>, [">= 0"])
77
83
  s.add_dependency(%q<shoulda>, [">= 0"])
78
84
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
79
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
85
+ s.add_dependency(%q<bundler>, [">= 0"])
80
86
  s.add_dependency(%q<jeweler>, [">= 0"])
81
87
  s.add_dependency(%q<rspec>, [">= 0"])
82
88
  end
data/lib/embedify.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'nokogiri'
2
2
  require 'faraday'
3
3
  require 'hashie'
4
+ require "addressable/uri"
5
+ require 'fastimage'
4
6
 
5
7
  module Embedify
6
8
 
@@ -81,9 +83,37 @@ module Embedify
81
83
  end
82
84
 
83
85
  def self.image(document)
84
- # TODO: loop through all images and bring back up to 30 good candidates
85
- # Good candidates: at least 50x50, max aspect ratio of 3:1, png/jpeg/gif format
86
- puts "image"
86
+ img_srcs = Set.new
87
+ document[:nokogiri_parsed_document].css('img').each do |img_tag|
88
+ img_srcs.add(make_absolute(img_tag.attribute('src'), document['url']))
89
+ end
90
+ if img_srcs.count > 0
91
+ document.image = Set.new
92
+ img_src_count = 1
93
+ img_srcs.each do |img_src|
94
+ dimensions = FastImage.size(img_src)
95
+ #puts "#{img_src} #{dimensions.to_s}"
96
+ document.image.add(url: img_src) if image_is_big_enough?(dimensions) && image_has_good_proportions?(dimensions)
97
+ img_src_count = img_src_count + 1
98
+ return if(img_src_count > 10)
99
+ end
100
+ end
101
+ end
102
+
103
+ def self.make_absolute( href, root )
104
+ URI.parse(root).merge(URI.parse(href)).to_s
105
+ end
106
+
107
+ def self.image_is_big_enough?(dimensions)
108
+ return false if dimensions.nil?
109
+ # at least 50x50
110
+ dimensions[0] >= 50 && dimensions[1] >= 50
111
+ end
112
+
113
+ def self.image_has_good_proportions?(dimensions)
114
+ return false if dimensions.nil?
115
+ # max aspect ratio of 3:1 (one dimension is not more than 3x the other - too narrow/wide in that case)
116
+ (dimensions[0] * 3 >= dimensions[1]) && (dimensions[1] * 3 >= dimensions[0])
87
117
  end
88
118
 
89
119
  def self.description(document)
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.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -91,6 +91,38 @@ dependencies:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: addressable
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: fastimage
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
94
126
  - !ruby/object:Gem::Dependency
95
127
  name: shoulda
96
128
  requirement: !ruby/object:Gem::Requirement
@@ -128,17 +160,17 @@ dependencies:
128
160
  requirement: !ruby/object:Gem::Requirement
129
161
  none: false
130
162
  requirements:
131
- - - ~>
163
+ - - ! '>='
132
164
  - !ruby/object:Gem::Version
133
- version: 1.0.0
165
+ version: '0'
134
166
  type: :development
135
167
  prerelease: false
136
168
  version_requirements: !ruby/object:Gem::Requirement
137
169
  none: false
138
170
  requirements:
139
- - - ~>
171
+ - - ! '>='
140
172
  - !ruby/object:Gem::Version
141
- version: 1.0.0
173
+ version: '0'
142
174
  - !ruby/object:Gem::Dependency
143
175
  name: jeweler
144
176
  requirement: !ruby/object:Gem::Requirement
@@ -214,7 +246,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
214
246
  version: '0'
215
247
  segments:
216
248
  - 0
217
- hash: 1796977382236343391
249
+ hash: 2781018951594904065
218
250
  required_rubygems_version: !ruby/object:Gem::Requirement
219
251
  none: false
220
252
  requirements: