wicked_pdf 1.1.0 → 2.1.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.
@@ -5,13 +5,8 @@ require File.expand_path('../dummy/config/environment.rb', __FILE__)
5
5
 
6
6
  require 'test/unit'
7
7
  require 'mocha'
8
-
9
- if Rails::VERSION::MAJOR == 2
10
- require 'test_help'
11
- else
12
- require 'rails/test_help'
13
- require 'mocha/test_unit'
14
- end
8
+ require 'rails/test_help'
9
+ require 'mocha/test_unit'
15
10
 
16
11
  require 'wicked_pdf'
17
12
 
@@ -24,7 +19,15 @@ if (assets_dir = Rails.root.join('app/assets')) && File.directory?(assets_dir)
24
19
  File.open(destination, 'w') { |f| f.write(source) }
25
20
 
26
21
  # Copy JS file
27
- destination = assets_dir.join('javascripts/wicked.js')
22
+ js_dir = assets_dir.join('javascripts')
23
+ Dir.mkdir(js_dir) unless File.directory?(js_dir)
24
+ destination = js_dir.join('wicked.js')
28
25
  source = File.read('test/fixtures/wicked.js')
29
26
  File.open(destination, 'w') { |f| f.write(source) }
27
+
28
+ config_dir = assets_dir.join('config')
29
+ Dir.mkdir(config_dir) unless File.directory?(config_dir)
30
+ source = File.read('test/fixtures/manifest.js')
31
+ destination = config_dir.join('manifest.js')
32
+ File.open(destination, 'w') { |f| f.write(source) }
30
33
  end
@@ -1,5 +1,4 @@
1
1
  require 'test_helper'
2
-
3
2
  WickedPdf.config = { :exe_path => ENV['WKHTMLTOPDF_BIN'] || '/usr/local/bin/wkhtmltopdf' }
4
3
  HTML_DOCUMENT = '<html><body>Hello World</body></html>'.freeze
5
4
 
@@ -7,7 +6,10 @@ HTML_DOCUMENT = 'Hello World'.freeze
7
6
  # Also, smash the returned array of options into a single string for
8
7
  # convenience in testing below.
9
8
  class WickedPdf
9
+ undef :binary_version
10
+ undef :binary_version=
10
11
  attr_accessor :binary_version
12
+
11
13
  def get_parsed_options(opts)
12
14
  parse_options(opts).join(' ')
13
15
  end
@@ -131,6 +133,11 @@ class WickedPdfTest < ActiveSupport::TestCase
131
133
  assert_equal '--outline-depth 5', @wp.get_parsed_options(:outline => { :outline_depth => 5 }).strip
132
134
  end
133
135
 
136
+ test 'should parse no_images option' do
137
+ assert_equal '--no-images', @wp.get_parsed_options(:no_images => true).strip
138
+ assert_equal '--images', @wp.get_parsed_options(:images => true).strip
139
+ end
140
+
134
141
  test 'should parse margins options' do
135
142
  [:top, :bottom, :left, :right].each do |o|
136
143
  assert_equal "--margin-#{o} 12", @wp.get_parsed_options(:margin => { o => '12' }).strip
@@ -200,7 +207,7 @@ class WickedPdfTest < ActiveSupport::TestCase
200
207
  test 'should not use double dash options for version without dashes' do
201
208
  @wp.binary_version = WickedPdf::BINARY_VERSION_WITHOUT_DASHES
202
209
 
203
- %w(toc cover).each do |name|
210
+ %w[toc cover].each do |name|
204
211
  assert_equal @wp.get_valid_option(name), name
205
212
  end
206
213
  end
@@ -208,7 +215,7 @@ class WickedPdfTest < ActiveSupport::TestCase
208
215
  test 'should use double dash options for version with dashes' do
209
216
  @wp.binary_version = Gem::Version.new('0.11.0')
210
217
 
211
- %w(toc cover).each do |name|
218
+ %w[toc cover].each do |name|
212
219
  assert_equal @wp.get_valid_option(name), "--#{name}"
213
220
  end
214
221
  end
@@ -218,4 +225,16 @@ class WickedPdfTest < ActiveSupport::TestCase
218
225
  cover_option = @wp.get_valid_option('cover')
219
226
  assert_equal @wp.get_parsed_options(options), "--disable-javascript --header-center 3 #{cover_option} http://example.org"
220
227
  end
228
+
229
+ test 'should output progress when creating pdfs on compatible hosts' do
230
+ wp = WickedPdf.new
231
+ output = []
232
+ options = { :progress => proc { |o| output << o } }
233
+ wp.pdf_from_string HTML_DOCUMENT, options
234
+ if RbConfig::CONFIG['target_os'] =~ /mswin|mingw/
235
+ assert_empty output
236
+ else
237
+ assert(output.collect { |l| !l.match(/Loading/).nil? }.include?(true)) # should output something like "Loading pages (1/5)"
238
+ end
239
+ end
221
240
  end
@@ -0,0 +1,50 @@
1
+
2
+
3
+ class WkhtmltopdfLocationTest < ActiveSupport::TestCase
4
+ setup do
5
+ @saved_config = WickedPdf.config
6
+ WickedPdf.config = {}
7
+ end
8
+
9
+ teardown do
10
+ WickedPdf.config = @saved_config
11
+ end
12
+
13
+ test 'should correctly locate wkhtmltopdf without bundler' do
14
+ bundler_module = Bundler
15
+ Object.send(:remove_const, :Bundler)
16
+
17
+ assert_nothing_raised do
18
+ WickedPdf.new
19
+ end
20
+
21
+ Object.const_set(:Bundler, bundler_module)
22
+ end
23
+
24
+ test 'should correctly locate wkhtmltopdf with bundler' do
25
+ assert_nothing_raised do
26
+ WickedPdf.new
27
+ end
28
+ end
29
+
30
+ class LocationNonWritableTest < ActiveSupport::TestCase
31
+ setup do
32
+ @saved_config = WickedPdf.config
33
+ WickedPdf.config = {}
34
+
35
+ @old_home = ENV['HOME']
36
+ ENV['HOME'] = '/not/a/writable/directory'
37
+ end
38
+
39
+ teardown do
40
+ WickedPdf.config = @saved_config
41
+ ENV['HOME'] = @old_home
42
+ end
43
+
44
+ test 'should correctly locate wkhtmltopdf with bundler while HOME is set to a non-writable directory' do
45
+ assert_nothing_raised do
46
+ WickedPdf.new
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,4 +1,4 @@
1
- # coding: utf-8
1
+
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'wicked_pdf/version'
@@ -7,28 +7,36 @@ require 'English'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'wicked_pdf'
9
9
  spec.version = WickedPdf::VERSION
10
- spec.authors = ['Miles Z. Sterrett']
11
- spec.email = 'miles.sterrett@gmail.com'
10
+ spec.authors = ['Miles Z. Sterrett', 'David Jones']
11
+ spec.email = ['miles.sterrett@gmail.com', 'unixmonkey1@gmail.com']
12
12
  spec.summary = 'PDF generator (from HTML) gem for Ruby on Rails'
13
13
  spec.homepage = 'https://github.com/mileszs/wicked_pdf'
14
14
  spec.license = 'MIT'
15
15
  spec.date = Time.now.strftime('%Y-%m-%d')
16
- spec.description = <<desc
17
- Wicked PDF uses the shell utility wkhtmltopdf to serve a PDF file to a user from HTML.
18
- In other words, rather than dealing with a PDF generation DSL of some sort,
19
- you simply write an HTML view as you would normally, and let Wicked take care of the hard stuff.
20
- desc
16
+ spec.description = <<DESC.gsub(/^\s+/, '')
17
+ Wicked PDF uses the shell utility wkhtmltopdf to serve a PDF file to a user from HTML.
18
+ In other words, rather than dealing with a PDF generation DSL of some sort,
19
+ you simply write an HTML view as you would normally, and let Wicked take care of the hard stuff.
20
+ DESC
21
+ spec.metadata = {
22
+ 'changelog_uri' => 'https://github.com/mileszs/wicked_pdf/blob/master/CHANGELOG.md'
23
+ }
21
24
 
25
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.2')
22
26
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
23
27
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
24
28
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
25
29
  spec.require_paths = ['lib']
26
30
 
31
+ spec.requirements << 'wkhtmltopdf'
32
+
33
+ spec.add_dependency 'activesupport'
34
+
27
35
  spec.add_development_dependency 'rails'
28
- spec.add_development_dependency 'bundler', '~> 1.3'
36
+ spec.add_development_dependency 'bundler'
29
37
  spec.add_development_dependency 'rake'
30
- spec.add_development_dependency 'rubocop' if RUBY_VERSION >= '2.0.0'
31
- spec.add_development_dependency 'sqlite3'
32
- spec.add_development_dependency 'mocha'
38
+ spec.add_development_dependency 'rubocop', '~> 0.68.0'
39
+ spec.add_development_dependency 'sqlite3', '~> 1.3'
40
+ spec.add_development_dependency 'mocha', '= 1.3'
33
41
  spec.add_development_dependency 'test-unit'
34
42
  end
metadata CHANGED
@@ -1,15 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wicked_pdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Z. Sterrett
8
+ - David Jones
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2016-08-30 00:00:00.000000000 Z
12
+ date: 2020-06-14 00:00:00.000000000 Z
12
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
13
28
  - !ruby/object:Gem::Dependency
14
29
  name: rails
15
30
  requirement: !ruby/object:Gem::Requirement
@@ -28,16 +43,16 @@ dependencies:
28
43
  name: bundler
29
44
  requirement: !ruby/object:Gem::Requirement
30
45
  requirements:
31
- - - "~>"
46
+ - - ">="
32
47
  - !ruby/object:Gem::Version
33
- version: '1.3'
48
+ version: '0'
34
49
  type: :development
35
50
  prerelease: false
36
51
  version_requirements: !ruby/object:Gem::Requirement
37
52
  requirements:
38
- - - "~>"
53
+ - - ">="
39
54
  - !ruby/object:Gem::Version
40
- version: '1.3'
55
+ version: '0'
41
56
  - !ruby/object:Gem::Dependency
42
57
  name: rake
43
58
  requirement: !ruby/object:Gem::Requirement
@@ -56,44 +71,44 @@ dependencies:
56
71
  name: rubocop
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
- - - ">="
74
+ - - "~>"
60
75
  - !ruby/object:Gem::Version
61
- version: '0'
76
+ version: 0.68.0
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
- - - ">="
81
+ - - "~>"
67
82
  - !ruby/object:Gem::Version
68
- version: '0'
83
+ version: 0.68.0
69
84
  - !ruby/object:Gem::Dependency
70
85
  name: sqlite3
71
86
  requirement: !ruby/object:Gem::Requirement
72
87
  requirements:
73
- - - ">="
88
+ - - "~>"
74
89
  - !ruby/object:Gem::Version
75
- version: '0'
90
+ version: '1.3'
76
91
  type: :development
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
79
94
  requirements:
80
- - - ">="
95
+ - - "~>"
81
96
  - !ruby/object:Gem::Version
82
- version: '0'
97
+ version: '1.3'
83
98
  - !ruby/object:Gem::Dependency
84
99
  name: mocha
85
100
  requirement: !ruby/object:Gem::Requirement
86
101
  requirements:
87
- - - ">="
102
+ - - '='
88
103
  - !ruby/object:Gem::Version
89
- version: '0'
104
+ version: '1.3'
90
105
  type: :development
91
106
  prerelease: false
92
107
  version_requirements: !ruby/object:Gem::Requirement
93
108
  requirements:
94
- - - ">="
109
+ - - '='
95
110
  - !ruby/object:Gem::Version
96
- version: '0'
111
+ version: '1.3'
97
112
  - !ruby/object:Gem::Dependency
98
113
  name: test-unit
99
114
  requirement: !ruby/object:Gem::Requirement
@@ -112,11 +127,14 @@ description: |
112
127
  Wicked PDF uses the shell utility wkhtmltopdf to serve a PDF file to a user from HTML.
113
128
  In other words, rather than dealing with a PDF generation DSL of some sort,
114
129
  you simply write an HTML view as you would normally, and let Wicked take care of the hard stuff.
115
- email: miles.sterrett@gmail.com
130
+ email:
131
+ - miles.sterrett@gmail.com
132
+ - unixmonkey1@gmail.com
116
133
  executables: []
117
134
  extensions: []
118
135
  extra_rdoc_files: []
119
136
  files:
137
+ - ".github/issue_template.md"
120
138
  - ".gitignore"
121
139
  - ".rubocop.yml"
122
140
  - ".rubocop_todo.yml"
@@ -126,14 +144,13 @@ files:
126
144
  - LICENSE.txt
127
145
  - README.md
128
146
  - Rakefile
129
- - gemfiles/2.3.gemfile
130
- - gemfiles/3.0.gemfile
131
- - gemfiles/3.1.gemfile
132
- - gemfiles/3.2.gemfile
133
147
  - gemfiles/4.0.gemfile
134
148
  - gemfiles/4.1.gemfile
135
149
  - gemfiles/4.2.gemfile
136
150
  - gemfiles/5.0.gemfile
151
+ - gemfiles/5.1.gemfile
152
+ - gemfiles/5.2.gemfile
153
+ - gemfiles/6.0.gemfile
137
154
  - gemfiles/rails_edge.gemfile
138
155
  - generators/wicked_pdf/templates/wicked_pdf.rb
139
156
  - generators/wicked_pdf/wicked_pdf_generator.rb
@@ -142,12 +159,15 @@ files:
142
159
  - lib/wicked_pdf.rb
143
160
  - lib/wicked_pdf/middleware.rb
144
161
  - lib/wicked_pdf/pdf_helper.rb
162
+ - lib/wicked_pdf/progress.rb
145
163
  - lib/wicked_pdf/railtie.rb
146
164
  - lib/wicked_pdf/tempfile.rb
147
165
  - lib/wicked_pdf/version.rb
148
166
  - lib/wicked_pdf/wicked_pdf_helper.rb
149
167
  - lib/wicked_pdf/wicked_pdf_helper/assets.rb
168
+ - test/fixtures/database.yml
150
169
  - test/fixtures/document_with_long_line.html
170
+ - test/fixtures/manifest.js
151
171
  - test/fixtures/wicked.css
152
172
  - test/fixtures/wicked.js
153
173
  - test/functional/pdf_helper_test.rb
@@ -155,11 +175,13 @@ files:
155
175
  - test/functional/wicked_pdf_helper_test.rb
156
176
  - test/test_helper.rb
157
177
  - test/unit/wicked_pdf_test.rb
178
+ - test/unit/wkhtmltopdf_location_test.rb
158
179
  - wicked_pdf.gemspec
159
180
  homepage: https://github.com/mileszs/wicked_pdf
160
181
  licenses:
161
182
  - MIT
162
- metadata: {}
183
+ metadata:
184
+ changelog_uri: https://github.com/mileszs/wicked_pdf/blob/master/CHANGELOG.md
163
185
  post_install_message:
164
186
  rdoc_options: []
165
187
  require_paths:
@@ -168,20 +190,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
168
190
  requirements:
169
191
  - - ">="
170
192
  - !ruby/object:Gem::Version
171
- version: '0'
193
+ version: '2.2'
172
194
  required_rubygems_version: !ruby/object:Gem::Requirement
173
195
  requirements:
174
196
  - - ">="
175
197
  - !ruby/object:Gem::Version
176
198
  version: '0'
177
- requirements: []
178
- rubyforge_project:
179
- rubygems_version: 2.5.1
199
+ requirements:
200
+ - wkhtmltopdf
201
+ rubygems_version: 3.0.3
180
202
  signing_key:
181
203
  specification_version: 4
182
204
  summary: PDF generator (from HTML) gem for Ruby on Rails
183
205
  test_files:
206
+ - test/fixtures/database.yml
184
207
  - test/fixtures/document_with_long_line.html
208
+ - test/fixtures/manifest.js
185
209
  - test/fixtures/wicked.css
186
210
  - test/fixtures/wicked.js
187
211
  - test/functional/pdf_helper_test.rb
@@ -189,3 +213,4 @@ test_files:
189
213
  - test/functional/wicked_pdf_helper_test.rb
190
214
  - test/test_helper.rb
191
215
  - test/unit/wicked_pdf_test.rb
216
+ - test/unit/wkhtmltopdf_location_test.rb
@@ -1,10 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 2.3.0'
5
- gem 'rake', '~> 0.9.2'
6
- gem 'ruby-prof', '~> 0.11.3'
7
- gem 'test-unit', '= 2.5.2'
8
- gem 'mocha', '~> 0.12.8'
9
-
10
- gemspec :path => '../'
@@ -1,12 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 3.0.0'
5
- gem 'sqlite3'
6
-
7
- if RUBY_VERSION < '1.9.3'
8
- gem 'rake', '~> 10.5'
9
- gem 'rack-cache', '~> 1.2.0'
10
- end
11
-
12
- gemspec :path => '../'
@@ -1,13 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 3.1.0'
5
- gem 'sqlite3'
6
- gem 'i18n', '~> 0.6.0'
7
-
8
- if RUBY_VERSION < '1.9.3'
9
- gem 'rake', '~> 10.5'
10
- gem 'rack-cache', '~> 1.2.0'
11
- end
12
-
13
- gemspec path: '../'
@@ -1,12 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem 'rdoc'
4
- gem 'rails', '~> 3.2.0'
5
- gem 'i18n', '~> 0.6.0'
6
-
7
- if RUBY_VERSION < '1.9.3'
8
- gem 'rake', '~> 10.5'
9
- gem 'rack-cache', '~> 1.2.0'
10
- end
11
-
12
- gemspec path: '../'