imgkit 1.5.0 → 1.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a763d2e0efa23649b3a27dbe8875dca656775ac
4
- data.tar.gz: 35bf192ce0d2216784edc1bcba4f450e39209472
3
+ metadata.gz: b6db8c1811095b219f1f7a4fabf5c8cd17f1185e
4
+ data.tar.gz: 934d7ca922cf72789af64fb78c13e82721c8f8ed
5
5
  SHA512:
6
- metadata.gz: d71932100236761f8aca8e4096a5ff82c64843c9a0e99af73d60662d1b6ba2f36788471b4891dc03bc68bbd5f9b564a3908e9605090bbdef3acd59a84220b7dc
7
- data.tar.gz: b1af40d621be98930de9643ca70875c4cba298defc211c9acabe5a93ac00c6d648360060c1befc6fa64f459dcaeac77d0cbb071d9657d124e60c0f41c770d5d0
6
+ metadata.gz: 85fd2c927e505b17de2dd6d5f965fdf02e27d6a330a14fa2504e9518f46c5dbb7d5b595140557eb1da587bce7263d13d6b2a2a7a1d9d6f783d13053d2b303e46
7
+ data.tar.gz: 7eb58a359bbbe0ed8e7e8833f025f9a51a5d4b2bad9082ad12237dc75a64982e1757739fef9e675fb24a2b0af73c10323ed2f2236d9bee50cf2d5105e74ff786
@@ -0,0 +1,6 @@
1
+ rvm:
2
+ - "2.1.5"
3
+ - "2.1.4"
4
+ - "2.1.3"
5
+ - "2.1.2"
6
+ - "1.9.3"
data/Gemfile CHANGED
@@ -8,6 +8,5 @@ group :test do
8
8
  gem "rspec-core", "~> 2"
9
9
  gem "mocha"
10
10
  gem "rack"
11
- gem "ruby-debug19", :platforms => :mri_19
12
- gem "ruby-debug", :platforms => :mri_18
11
+ gem 'wkhtmltoimage-binary'
13
12
  end
@@ -1,22 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- imgkit (1.5.0)
4
+ imgkit (1.6.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- archive-tar-minitar (0.5.2)
10
- columnize (0.3.4)
11
9
  diff-lcs (1.1.2)
12
- linecache (0.46)
13
- rbx-require-relative (> 0.0.4)
14
- linecache19 (0.5.12)
15
- ruby_core_source (>= 0.1.4)
16
10
  mocha (0.9.12)
17
11
  rack (1.3.0)
18
12
  rake (0.9.2.2)
19
- rbx-require-relative (0.0.5)
20
13
  rspec (2.6.0)
21
14
  rspec-core (~> 2.6.0)
22
15
  rspec-expectations (~> 2.6.0)
@@ -25,21 +18,7 @@ GEM
25
18
  rspec-expectations (2.6.0)
26
19
  diff-lcs (~> 1.1.2)
27
20
  rspec-mocks (2.6.0)
28
- ruby-debug (0.10.4)
29
- columnize (>= 0.1)
30
- ruby-debug-base (~> 0.10.4.0)
31
- ruby-debug-base (0.10.4)
32
- linecache (>= 0.3)
33
- ruby-debug-base19 (0.11.25)
34
- columnize (>= 0.3.1)
35
- linecache19 (>= 0.5.11)
36
- ruby_core_source (>= 0.1.4)
37
- ruby-debug19 (0.11.6)
38
- columnize (>= 0.3.1)
39
- linecache19 (>= 0.5.11)
40
- ruby-debug-base19 (>= 0.11.19)
41
- ruby_core_source (0.1.5)
42
- archive-tar-minitar (>= 0.5.2)
21
+ wkhtmltoimage-binary (0.12.1)
43
22
 
44
23
  PLATFORMS
45
24
  ruby
@@ -51,5 +30,4 @@ DEPENDENCIES
51
30
  rake
52
31
  rspec (~> 2)
53
32
  rspec-core (~> 2)
54
- ruby-debug
55
- ruby-debug19
33
+ wkhtmltoimage-binary
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # IMGKit
2
2
 
3
+ <img src="https://travis-ci.org/csquared/IMGKit.svg?branch=master" />
4
+
3
5
  Create JPGs using plain old HTML+CSS. Uses [wkhtmltoimage](http://github.com/antialize/wkhtmltopdf) on the backend which renders HTML using Webkit.
4
6
 
5
7
  Heavily based on [PDFKit](http://github.com/jdpace/pdfkit/).
@@ -11,10 +13,14 @@ Heavily based on [PDFKit](http://github.com/jdpace/pdfkit/).
11
13
  gem install imgkit
12
14
 
13
15
  ### wkhtmltoimage
14
- * **Automatic**: `sudo imgkit --install-wkhtmltoimage`
16
+ 1. Use installer: `sudo imgkit --install-wkhtmltoimage`
15
17
  install latest version into /usr/local/bin
16
18
  (overwrite defaults with e.g. ARCHITECTURE=amd64 TO=/home/foo/bin)
17
- * By hand: http://code.google.com/p/wkhtmltopdf/downloads/list
19
+ 2. Install by hand: [http://wkhtmltopdf.org/downloads.html](http://wkhtmltopdf.org/downloads.html)
20
+ 3. Try using the `wkhtmltoimage-binary` gem (mac + linux)
21
+ ```
22
+ gem install wkhtmltoimage-binary
23
+ ```
18
24
 
19
25
  ## Usage
20
26
 
@@ -22,6 +28,7 @@ Heavily based on [PDFKit](http://github.com/jdpace/pdfkit/).
22
28
  # run `wkhtmltoimage --extended-help` for a full list of options
23
29
  kit = IMGKit.new(html, :quality => 50)
24
30
  kit.stylesheets << '/path/to/css/file'
31
+ kit.javascripts << '/path/to/js/file'
25
32
 
26
33
  # Get the image BLOB
27
34
  img = kit.to_img
@@ -36,7 +43,7 @@ Heavily based on [PDFKit](http://github.com/jdpace/pdfkit/).
36
43
  file = kit.to_file('/path/to/save/file.png')
37
44
 
38
45
  # IMGKit.new can optionally accept a URL or a File.
39
- # Stylesheets can not be added when source is provided as a URL of File.
46
+ # Stylesheets nor Javascripts can not be added when source is provided as a URL of File.
40
47
  kit = IMGKit.new('http://google.com')
41
48
  kit = IMGKit.new(File.new('/path/to/html'))
42
49
 
@@ -245,20 +252,7 @@ Contributed by @ticktricktrack
245
252
 
246
253
  ## Testing
247
254
 
248
- Make sure the tests pass in the following ruby versions:
249
-
250
- - 1.8.7-p370
251
- - 1.9.2-p290
252
- - 1.9.3-p194
253
-
254
- You can simply
255
-
256
- $ rbenv-install <version>
257
- $ rbenv shell <version>
258
- $ bundle
259
- $ bundle exec rake
260
-
261
- For each version
255
+ Travis.yml is configured for multiple rubies, so I would just test a 2.1.x version and let travis handle the rest.
262
256
 
263
257
  ## Copyright
264
258
 
@@ -30,13 +30,14 @@ class IMGKit
30
30
  end
31
31
  end
32
32
 
33
- attr_accessor :source, :stylesheets
33
+ attr_accessor :source, :stylesheets, :javascripts
34
34
  attr_reader :options
35
35
 
36
36
  def initialize(url_file_or_html, options = {})
37
37
  @source = Source.new(url_file_or_html)
38
38
 
39
39
  @stylesheets = []
40
+ @javascripts = []
40
41
 
41
42
  @options = IMGKit.configuration.default_options.merge(options)
42
43
  @options.merge! find_options_in_meta(url_file_or_html) unless source.url?
@@ -102,6 +103,7 @@ class IMGKit
102
103
 
103
104
  def to_img(format = nil)
104
105
  append_stylesheets
106
+ append_javascripts
105
107
  set_format(format)
106
108
 
107
109
  opts = @source.html? ? {:stdin_data => @source.to_s} : {}
@@ -151,6 +153,14 @@ class IMGKit
151
153
  "<style>#{stylesheet.respond_to?(:read) ? stylesheet.read : File.read(stylesheet)}</style>"
152
154
  end
153
155
 
156
+ def script_tag_for(javascript)
157
+ if javascript.respond_to?(:read)
158
+ "<script>#{javascript.read}</script>"
159
+ else
160
+ "<script src=\"#{javascript}\" type=\"text/javascript\"></script>"
161
+ end
162
+ end
163
+
154
164
  def append_stylesheets
155
165
  raise ImproperSourceError.new('Stylesheets may only be added to an HTML source') if stylesheets.any? && !@source.html?
156
166
 
@@ -163,6 +173,18 @@ class IMGKit
163
173
  end
164
174
  end
165
175
 
176
+ def append_javascripts
177
+ raise ImproperSourceError.new('Javascripts may only be added to an HTML source') if javascripts.any? && !@source.html?
178
+
179
+ javascripts.each do |javascript|
180
+ if @source.to_s.match(/<\/head>/)
181
+ @source.to_s.gsub!(/(<\/head>)/, script_tag_for(javascript)+'\1')
182
+ else
183
+ @source.to_s.insert(0, script_tag_for(javascript))
184
+ end
185
+ end
186
+ end
187
+
166
188
  def normalize_options(options)
167
189
  normalized_options = {}
168
190
 
@@ -1,3 +1,3 @@
1
1
  class IMGKit
2
- VERSION = "1.5.0"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -0,0 +1 @@
1
+ console.log('Yay!');
@@ -163,6 +163,37 @@ describe IMGKit do
163
163
  lambda { imgkit.to_img }.should raise_error(IMGKit::ImproperSourceError)
164
164
  end
165
165
 
166
+ it "should have the script added to the head if it has one" do
167
+ imgkit = IMGKit.new("<html><head></head><body>Hai!</body></html>")
168
+ js = File.join(SPEC_ROOT,'fixtures','example.js')
169
+ imgkit.javascripts << js
170
+ imgkit.to_img
171
+ imgkit.source.to_s.should include("<script src=\"#{js}\" type=\"text/javascript\"></script>")
172
+ end
173
+
174
+ it "should accept script as an object which responds to #read" do
175
+ imgkit = IMGKit.new("<html><head></head><body>Hai!</body></html>")
176
+ js = StringIO.new( File.read(File.join(SPEC_ROOT,'fixtures','example.js')) )
177
+ imgkit.javascripts << js
178
+ imgkit.to_img
179
+ imgkit.source.to_s.should include("<script>#{js.string}</script>")
180
+ end
181
+
182
+ it "should prepend script tags if the HTML doesn't have a head tag" do
183
+ imgkit = IMGKit.new("<html><body>Hai!</body></html>")
184
+ js = File.join(SPEC_ROOT,'fixtures','example.js')
185
+ imgkit.javascripts << js
186
+ imgkit.to_img
187
+ imgkit.source.to_s.should include("<script src=\"#{js}\" type=\"text/javascript\"></script>")
188
+ end
189
+
190
+ it "should throw an error if the source is not html and script have been added" do
191
+ imgkit = IMGKit.new('http://google.com')
192
+ js = File.join(SPEC_ROOT,'fixtures','example.js')
193
+ imgkit.javascripts << js
194
+ lambda { imgkit.to_img }.should raise_error(IMGKit::ImproperSourceError)
195
+ end
196
+
166
197
  def set_wkhtmltoimage_binary(binary)
167
198
  spec_dir = File.dirname(__FILE__)
168
199
  IMGKit.configuration.should_receive(:wkhtmltoimage).at_least(1).times.and_return(File.join(spec_dir, binary))
@@ -9,9 +9,7 @@ require 'rack'
9
9
 
10
10
  RSpec.configure do |config|
11
11
  config.before do
12
- IMGKit.any_instance.stubs(:wkhtmltoimage).returns(
13
- File.join(SPEC_ROOT,'..','bin','wkhtmltoimage-proxy')
14
- )
12
+ IMGKit.any_instance.stubs(:wkhtmltoimage).returns('bundle exec wkhtmltoimage')
15
13
  end
16
14
  end
17
15
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imgkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - csquared
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-07 00:00:00.000000000 Z
11
+ date: 2014-12-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Uses wkhtmltoimage to create Images using HTML
14
14
  email: christopher.continanza@gmail.com
@@ -21,6 +21,7 @@ files:
21
21
  - ".gitignore"
22
22
  - ".rspec"
23
23
  - ".rvmrc"
24
+ - ".travis.yml"
24
25
  - Gemfile
25
26
  - Gemfile.lock
26
27
  - LICENSE
@@ -38,6 +39,7 @@ files:
38
39
  - spec/error_binary
39
40
  - spec/fixtures/example.css
40
41
  - spec/fixtures/example.html
42
+ - spec/fixtures/example.js
41
43
  - spec/imgkit_spec.rb
42
44
  - spec/source_spec.rb
43
45
  - spec/spec_helper.rb
@@ -82,6 +84,7 @@ test_files:
82
84
  - spec/error_binary
83
85
  - spec/fixtures/example.css
84
86
  - spec/fixtures/example.html
87
+ - spec/fixtures/example.js
85
88
  - spec/imgkit_spec.rb
86
89
  - spec/source_spec.rb
87
90
  - spec/spec_helper.rb