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.
- checksums.yaml +5 -5
- data/.github/issue_template.md +15 -0
- data/.rubocop.yml +11 -0
- data/.rubocop_todo.yml +160 -30
- data/.travis.yml +56 -34
- data/CHANGELOG.md +115 -40
- data/README.md +93 -19
- data/Rakefile +14 -4
- data/gemfiles/4.0.gemfile +1 -0
- data/gemfiles/4.1.gemfile +1 -0
- data/gemfiles/4.2.gemfile +3 -0
- data/gemfiles/5.0.gemfile +2 -0
- data/gemfiles/5.1.gemfile +8 -0
- data/gemfiles/5.2.gemfile +10 -0
- data/gemfiles/6.0.gemfile +11 -0
- data/gemfiles/rails_edge.gemfile +5 -2
- data/generators/wicked_pdf/templates/wicked_pdf.rb +6 -0
- data/lib/generators/wicked_pdf_generator.rb +5 -9
- data/lib/wicked_pdf.rb +62 -48
- data/lib/wicked_pdf/middleware.rb +1 -1
- data/lib/wicked_pdf/pdf_helper.rb +29 -21
- data/lib/wicked_pdf/progress.rb +33 -0
- data/lib/wicked_pdf/railtie.rb +9 -38
- data/lib/wicked_pdf/version.rb +1 -1
- data/lib/wicked_pdf/wicked_pdf_helper.rb +2 -1
- data/lib/wicked_pdf/wicked_pdf_helper/assets.rb +73 -7
- data/test/fixtures/database.yml +4 -0
- data/test/fixtures/manifest.js +3 -0
- data/test/functional/pdf_helper_test.rb +71 -0
- data/test/test_helper.rb +11 -8
- data/test/unit/wicked_pdf_test.rb +22 -3
- data/test/unit/wkhtmltopdf_location_test.rb +50 -0
- data/wicked_pdf.gemspec +20 -12
- metadata +53 -28
- data/gemfiles/2.3.gemfile +0 -10
- data/gemfiles/3.0.gemfile +0 -12
- data/gemfiles/3.1.gemfile +0 -13
- data/gemfiles/3.2.gemfile +0 -12
data/test/test_helper.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
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
|
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
|
data/wicked_pdf.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
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 = <<
|
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
|
-
|
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'
|
36
|
+
spec.add_development_dependency 'bundler'
|
29
37
|
spec.add_development_dependency 'rake'
|
30
|
-
spec.add_development_dependency 'rubocop'
|
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:
|
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:
|
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: '
|
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: '
|
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:
|
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:
|
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: '
|
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: '
|
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: '
|
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: '
|
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:
|
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: '
|
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
|
-
|
179
|
-
rubygems_version:
|
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
|
data/gemfiles/2.3.gemfile
DELETED
data/gemfiles/3.0.gemfile
DELETED
data/gemfiles/3.1.gemfile
DELETED