pdfkit 0.5.3 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pdfkit might be problematic. Click here for more details.

@@ -1,3 +1,13 @@
1
+ 2013-06-12
2
+ ==================
3
+ * Bump to 0.5.4
4
+ * Fix broken page numbers (https://github.com/pdfkit/pdfkit/pull/181)
5
+
6
+ 2013-02-21
7
+ ==================
8
+ * Bump to 0.5.3
9
+ * Fix security vulnerability due to unsanitized strings being passed to `wkhtmltopdf` (https://github.com/pdfkit/pdfkit/issues/164)
10
+
1
11
  2011-07-02
2
12
  ==================
3
13
  * Bump to 0.5.2
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source :gemcutter
1
+ source 'https://rubygems.org'
2
2
 
3
- gemspec
3
+ gemspec
data/Gemfile.lock CHANGED
@@ -1,18 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pdfkit (0.5.3)
4
+ pdfkit (0.5.4)
5
5
 
6
6
  GEM
7
- remote: http://rubygems.org/
7
+ remote: https://rubygems.org/
8
8
  specs:
9
9
  activesupport (3.0.9)
10
10
  diff-lcs (1.1.2)
11
+ json (1.7.7)
11
12
  mocha (0.9.12)
12
13
  rack (1.3.0)
13
14
  rack-test (0.6.0)
14
15
  rack (>= 1.0)
15
16
  rake (0.9.2)
17
+ rdoc (4.0.1)
18
+ json (~> 1.4)
16
19
  rspec (2.2.0)
17
20
  rspec-core (~> 2.2)
18
21
  rspec-expectations (~> 2.2)
@@ -32,5 +35,6 @@ DEPENDENCIES
32
35
  pdfkit!
33
36
  rack-test (>= 0.5.6)
34
37
  rake (~> 0.9.2)
38
+ rdoc (~> 4.0.1)
35
39
  rspec (~> 2.2.0)
36
40
  wkhtmltopdf-binary (~> 0.9.5)
data/README.md CHANGED
@@ -5,9 +5,9 @@ Create PDFs using plain old HTML+CSS. Uses [wkhtmltopdf](http://github.com/antia
5
5
  ## Install
6
6
 
7
7
  ### PDFKit
8
-
9
- gem install pdfkit
10
-
8
+ ```
9
+ gem install pdfkit
10
+ ```
11
11
  ### wkhtmltopdf
12
12
 
13
13
  1. Install by hand (recommended):
@@ -15,85 +15,82 @@ Create PDFs using plain old HTML+CSS. Uses [wkhtmltopdf](http://github.com/antia
15
15
  <https://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF>
16
16
 
17
17
  2. Try using the wkhtmltopdf-binary gem (mac + linux i386)
18
-
19
- gem install wkhtmltopdf-binary
20
-
18
+ ```
19
+ gem install wkhtmltopdf-binary
20
+ ```
21
21
  *Note:* The automated installer has been removed.
22
22
 
23
23
  ## Usage
24
-
25
- # PDFKit.new takes the HTML and any options for wkhtmltopdf
26
- # run `wkhtmltopdf --extended-help` for a full list of options
27
- kit = PDFKit.new(html, :page_size => 'Letter')
28
- kit.stylesheets << '/path/to/css/file'
29
-
30
- # Get an inline PDF
31
- pdf = kit.to_pdf
32
-
33
- # Save the PDF to a file
34
- file = kit.to_file('/path/to/save/pdf')
35
-
36
- # PDFKit.new can optionally accept a URL or a File.
37
- # Stylesheets can not be added when source is provided as a URL of File.
38
- kit = PDFKit.new('http://google.com')
39
- kit = PDFKit.new(File.new('/path/to/html'))
40
-
41
- # Add any kind of option through meta tags
42
- PDFKit.new('<html><head><meta name="pdfkit-page_size" content="Letter")
43
-
24
+ ```ruby
25
+ # PDFKit.new takes the HTML and any options for wkhtmltopdf
26
+ # run `wkhtmltopdf --extended-help` for a full list of options
27
+ kit = PDFKit.new(html, :page_size => 'Letter')
28
+ kit.stylesheets << '/path/to/css/file'
29
+
30
+ # Get an inline PDF
31
+ pdf = kit.to_pdf
32
+
33
+ # Save the PDF to a file
34
+ file = kit.to_file('/path/to/save/pdf')
35
+
36
+ # PDFKit.new can optionally accept a URL or a File.
37
+ # Stylesheets can not be added when source is provided as a URL of File.
38
+ kit = PDFKit.new('http://google.com')
39
+ kit = PDFKit.new(File.new('/path/to/html'))
40
+
41
+ # Add any kind of option through meta tags
42
+ PDFKit.new('<html><head><meta name="pdfkit-page_size" content="Letter"')
43
+ ```
44
44
  ## Configuration
45
-
46
45
  If you're on Windows or you installed wkhtmltopdf by hand to a location other than /usr/local/bin you will need to tell PDFKit where the binary is. You can configure PDFKit like so:
47
-
48
- # config/initializers/pdfkit.rb
49
- PDFKit.configure do |config|
50
- # config.wkhtmltopdf = '/path/to/wkhtmltopdf'
51
- # config.default_options = {
52
- # :page_size => 'Legal',
53
- # :print_media_type => true
54
- # }
55
- # config.root_url = "http://localhost" # Use only if your external hostname is unavailable on the server.
56
- end
57
-
46
+ ```ruby
47
+ # config/initializers/pdfkit.rb
48
+ PDFKit.configure do |config|
49
+ # config.wkhtmltopdf = '/path/to/wkhtmltopdf'
50
+ # config.default_options = {
51
+ # :page_size => 'Legal',
52
+ # :print_media_type => true
53
+ # }
54
+ # config.root_url = "http://localhost" # Use only if your external hostname is unavailable on the server.
55
+ end
56
+ ```
58
57
  ## Middleware
59
-
60
58
  PDFKit comes with a middleware that allows users to get a PDF view of any page on your site by appending .pdf to the URL.
61
59
 
62
60
  ### Middleware Setup
63
-
64
61
  **Non-Rails Rack apps**
65
-
66
- # in config.ru
67
- require 'pdfkit'
68
- use PDFKit::Middleware
69
-
62
+ ```ruby
63
+ # in config.ru
64
+ require 'pdfkit'
65
+ use PDFKit::Middleware
66
+ ```
70
67
  **Rails apps**
71
-
72
- # in application.rb(Rails3) or environment.rb(Rails2)
73
- require 'pdfkit'
74
- config.middleware.use PDFKit::Middleware
75
-
68
+ ```ruby
69
+ # in application.rb(Rails3) or environment.rb(Rails2)
70
+ require 'pdfkit'
71
+ config.middleware.use PDFKit::Middleware
72
+ ```
76
73
  **With PDFKit options**
77
-
78
- # options will be passed to PDFKit.new
79
- config.middleware.use PDFKit::Middleware, :print_media_type => true
80
-
74
+ ```ruby
75
+ # options will be passed to PDFKit.new
76
+ config.middleware.use PDFKit::Middleware, :print_media_type => true
77
+ ```
81
78
  **With conditions to limit routes that can be generated in pdf**
79
+ ```ruby
80
+ # conditions can be regexps (either one or an array)
81
+ config.middleware.use PDFKit::Middleware, {}, :only => %r[^/public]
82
+ config.middleware.use PDFKit::Middleware, {}, :only => [%r[^/invoice], %r[^/public]]
82
83
 
83
- # conditions can be regexps (either one or an array)
84
- config.middleware.use PDFKit::Middleware, {}, :only => %r[^/public]
85
- config.middleware.use PDFKit::Middleware, {}, :only => [%r[^/invoice], %r[^/public]]
86
-
87
- # conditions can be strings (either one or an array)
88
- config.middleware.use PDFKit::Middleware, {}, :only => '/public'
89
- config.middleware.use PDFKit::Middleware, {}, :only => ['/invoice', '/public']
90
-
91
- # conditions can be regexps (either one or an array)
92
- config.middleware.use PDFKit::Middleware, {}, :except => [%r[^/prawn], %r[^/secret]]
84
+ # conditions can be strings (either one or an array)
85
+ config.middleware.use PDFKit::Middleware, {}, :only => '/public'
86
+ config.middleware.use PDFKit::Middleware, {}, :only => ['/invoice', '/public']
93
87
 
94
- # conditions can be strings (either one or an array)
95
- config.middleware.use PDFKit::Middleware, {}, :except => ['/secret']
88
+ # conditions can be regexps (either one or an array)
89
+ config.middleware.use PDFKit::Middleware, {}, :except => [%r[^/prawn], %r[^/secret]]
96
90
 
91
+ # conditions can be strings (either one or an array)
92
+ config.middleware.use PDFKit::Middleware, {}, :except => ['/secret']
93
+ ```
97
94
  ## Troubleshooting
98
95
 
99
96
  * **Single thread issue:** In development environments it is common to run a
data/Rakefile CHANGED
@@ -13,8 +13,8 @@ end
13
13
 
14
14
  task :default => :spec
15
15
 
16
- require 'rake/rdoctask'
17
- Rake::RDocTask.new do |rdoc|
16
+ require 'rdoc/task'
17
+ RDoc::Task.new do |rdoc|
18
18
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
19
19
 
20
20
  rdoc.rdoc_dir = 'rdoc'
data/lib/pdfkit/pdfkit.rb CHANGED
@@ -5,7 +5,7 @@ class PDFKit
5
5
  class NoExecutableError < StandardError
6
6
  def initialize
7
7
  msg = "No wkhtmltopdf executable found at #{PDFKit.configuration.wkhtmltopdf}\n"
8
- msg << ">> Please install wkhtmltopdf - https://github.com/jdpace/PDFKit/wiki/Installing-WKHTMLTOPDF"
8
+ msg << ">> Please install wkhtmltopdf - https://github.com/pdfkit/PDFKit/wiki/Installing-WKHTMLTOPDF"
9
9
  super(msg)
10
10
  end
11
11
  end
@@ -44,7 +44,7 @@ class PDFKit
44
44
 
45
45
  args << (path || '-') # Write to file or stdout
46
46
 
47
- args.map {|arg| %Q{"#{arg.shellescape}"}}
47
+ args.shelljoin
48
48
  end
49
49
 
50
50
  def executable
@@ -60,8 +60,7 @@ class PDFKit
60
60
  def to_pdf(path=nil)
61
61
  append_stylesheets
62
62
 
63
- args = command(path)
64
- invoke = args.join(' ')
63
+ invoke = command(path)
65
64
 
66
65
  result = IO.popen(invoke, "wb+") do |pdf|
67
66
  pdf.puts(@source.to_s) if @source.html?
@@ -70,7 +69,8 @@ class PDFKit
70
69
  end
71
70
  result = File.read(path) if path
72
71
 
73
- raise "command failed: #{invoke}" if result.to_s.strip.empty?
72
+ # $? is thread safe per http://stackoverflow.com/questions/2164887/thread-safe-external-process-in-ruby-plus-checking-exitstatus
73
+ raise "command failed: #{invoke}" if result.to_s.strip.empty? or !$?.success?
74
74
  return result
75
75
  end
76
76
 
@@ -129,8 +129,12 @@ class PDFKit
129
129
 
130
130
  def normalize_value(value)
131
131
  case value
132
- when TrueClass
132
+ when TrueClass #ie, ==true, see http://www.ruby-doc.org/core-1.9.3/TrueClass.html
133
133
  nil
134
+ when Hash
135
+ value.to_a.flatten.collect{|x| x.to_s}
136
+ when Array
137
+ value.flatten.collect{|x| x.to_s}
134
138
  else
135
139
  value.to_s
136
140
  end
@@ -1,3 +1,3 @@
1
1
  class PDFKit
2
- VERSION = "0.5.3"
2
+ VERSION = "0.5.4"
3
3
  end
data/pdfkit.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Jared Pace", "Relevance"]
10
10
  s.email = ["jared@codewordstudios.com"]
11
- s.homepage = "http://github.com/jdpace/PDFKit"
11
+ s.homepage = "https://github.com/pdfkit/pdfkit"
12
12
  s.summary = "HTML+CSS -> PDF"
13
13
  s.description = "Uses wkhtmltopdf to create PDFs using HTML"
14
14
 
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
 
22
22
  # Developmnet Dependencies
23
23
  s.add_development_dependency(%q<rake>, ["~>0.9.2"])
24
+ s.add_development_dependency(%q<rdoc>, ["~> 4.0.1"])
24
25
  s.add_development_dependency(%q<rspec>, ["~> 2.2.0"])
25
26
  s.add_development_dependency(%q<mocha>, [">= 0.9.10"])
26
27
  s.add_development_dependency(%q<rack-test>, [">= 0.5.6"])
data/spec/pdfkit_spec.rb CHANGED
@@ -28,6 +28,11 @@ describe PDFKit do
28
28
  pdfkit.options.should have_key('--page-size')
29
29
  end
30
30
 
31
+ it "should parse complex options into a cmd line friedly format" do
32
+ pdfkit = PDFKit.new('html', :replace => {'value' => 'something else'} )
33
+ pdfkit.options.should have_key('--replace')
34
+ end
35
+
31
36
  it "should provide default options" do
32
37
  pdfkit = PDFKit.new('<h1>Oh Hai</h1>')
33
38
  ['--margin-top', '--margin-right', '--margin-bottom', '--margin-left'].each do |option|
@@ -48,10 +53,12 @@ describe PDFKit do
48
53
 
49
54
  context "command" do
50
55
  it "should contstruct the correct command" do
51
- pdfkit = PDFKit.new('html', :page_size => 'Letter', :toc_l1_font_size => 12)
52
- pdfkit.command[0].should include('wkhtmltopdf')
53
- pdfkit.command[pdfkit.command.index('"--page-size"') + 1].should == '"Letter"'
54
- pdfkit.command[pdfkit.command.index('"--toc-l1-font-size"') + 1].should == '"12"'
56
+ pdfkit = PDFKit.new('html', :page_size => 'Letter', :toc_l1_font_size => 12, :replace => {'foo' => 'bar'})
57
+ command = pdfkit.command
58
+ command.should include "wkhtmltopdf"
59
+ command.should include "--page-size Letter"
60
+ command.should include "--toc-l1-font-size 12"
61
+ command.should include "--replace foo bar"
55
62
  end
56
63
 
57
64
  it "will not include default options it is told to omit" do
@@ -60,41 +67,41 @@ describe PDFKit do
60
67
  end
61
68
 
62
69
  pdfkit = PDFKit.new('html')
63
- pdfkit.command.should include('"--disable-smart-shrinking"')
70
+ pdfkit.command.should include('--disable-smart-shrinking')
64
71
  pdfkit = PDFKit.new('html', :disable_smart_shrinking => false)
65
- pdfkit.command.should_not include('"--disable-smart-shrinking"')
72
+ pdfkit.command.should_not include('--disable-smart-shrinking')
66
73
  end
67
74
 
68
75
  it "should encapsulate string arguments in quotes" do
69
76
  pdfkit = PDFKit.new('html', :header_center => "foo [page]")
70
- pdfkit.command[pdfkit.command.index('"--header-center"') + 1].should == '"foo\ \[page\]"'
77
+ pdfkit.command.should include "--header-center foo\\ \\[page\\]"
71
78
  end
72
79
 
73
80
  it "should sanitize string arguments" do
74
81
  pdfkit = PDFKit.new('html', :header_center => "$(ls)")
75
- pdfkit.command[pdfkit.command.index('"--header-center"') + 1].should == '"\$\(ls\)"'
82
+ pdfkit.command.should include "--header-center \\$\\(ls\\)"
76
83
  end
77
84
 
78
85
  it "read the source from stdin if it is html" do
79
86
  pdfkit = PDFKit.new('html')
80
- pdfkit.command[-2..-1].should == ['"-"', '"-"']
87
+ pdfkit.command.should match /- -$/
81
88
  end
82
89
 
83
90
  it "specify the URL to the source if it is a url" do
84
91
  pdfkit = PDFKit.new('http://google.com')
85
- pdfkit.command[-2..-1].should == ['"http://google.com"', '"-"']
92
+ pdfkit.command.should match /http:\/\/google.com -$/
86
93
  end
87
94
 
88
95
  it "should specify the path to the source if it is a file" do
89
96
  file_path = File.join(SPEC_ROOT,'fixtures','example.html')
90
97
  pdfkit = PDFKit.new(File.new(file_path))
91
- pdfkit.command[-2..-1].should == [%Q{"#{file_path}"}, '"-"']
98
+ pdfkit.command.should match /#{file_path} -$/
92
99
  end
93
100
 
94
101
  it "should specify the path for the ouput if a apth is given" do
95
102
  file_path = "/path/to/output.pdf"
96
103
  pdfkit = PDFKit.new("html")
97
- pdfkit.command(file_path).last.should == %Q{"#{file_path}"}
104
+ pdfkit.command(file_path).should match /#{file_path}$/
98
105
  end
99
106
 
100
107
  it "should detect special pdfkit meta tags" do
@@ -107,8 +114,9 @@ describe PDFKit do
107
114
  </html>
108
115
  }
109
116
  pdfkit = PDFKit.new(body)
110
- pdfkit.command[pdfkit.command.index('"--page-size"') + 1].should == '"Legal"'
111
- pdfkit.command[pdfkit.command.index('"--orientation"') + 1].should == '"Landscape"'
117
+ command = pdfkit.command
118
+ command.should include "--page-size Legal"
119
+ command.should include "--orientation Landscape"
112
120
  end
113
121
 
114
122
  it "should detect special pdfkit meta tags despite bad markup" do
@@ -122,8 +130,9 @@ describe PDFKit do
122
130
  </html>
123
131
  }
124
132
  pdfkit = PDFKit.new(body)
125
- pdfkit.command[pdfkit.command.index('"--page-size"') + 1].should == '"Legal"'
126
- pdfkit.command[pdfkit.command.index('"--orientation"') + 1].should == '"Landscape"'
133
+ command = pdfkit.command
134
+ command.should include "--page-size Legal"
135
+ command.should include "--orientation Landscape"
127
136
  end
128
137
 
129
138
  it "should skip non-pdfkit meta tags" do
@@ -137,7 +146,9 @@ describe PDFKit do
137
146
  </html>
138
147
  }
139
148
  pdfkit = PDFKit.new(body)
140
- pdfkit.command[pdfkit.command.index('"--orientation"') + 1].should == '"Landscape"'
149
+ command = pdfkit.command
150
+ command.should_not include "--page-size Legal"
151
+ command.should include "--orientation Landscape"
141
152
  end
142
153
 
143
154
  end
@@ -192,6 +203,10 @@ describe PDFKit do
192
203
  pdfkit.source.to_s.should include("<style>#{File.read(css)}</style></head>")
193
204
  end
194
205
 
206
+ it "should throw an error if it is unable to connect" do
207
+ pdfkit = PDFKit.new("http://google.com/this-should-not-be-found/404.html")
208
+ lambda { pdfkit.to_pdf }.should raise_error
209
+ end
195
210
  end
196
211
 
197
212
  context "#to_file" do
@@ -237,5 +252,4 @@ describe PDFKit do
237
252
  File.exist?(@test_path).should be_false
238
253
  end
239
254
  end
240
-
241
255
  end
metadata CHANGED
@@ -1,127 +1,152 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pdfkit
3
- version: !ruby/object:Gem::Version
4
- version: 0.5.3
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 5
9
+ - 4
10
+ version: 0.5.4
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Jared Pace
9
14
  - Relevance
10
15
  autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
- date: 2013-02-21 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2013-06-12 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
16
22
  name: rake
17
- requirement: !ruby/object:Gem::Requirement
23
+ version_requirements: &id001 !ruby/object:Gem::Requirement
18
24
  none: false
19
- requirements:
25
+ requirements:
20
26
  - - ~>
21
- - !ruby/object:Gem::Version
27
+ - !ruby/object:Gem::Version
28
+ hash: 63
29
+ segments:
30
+ - 0
31
+ - 9
32
+ - 2
22
33
  version: 0.9.2
23
- type: :development
24
34
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
35
+ type: :development
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rdoc
39
+ version_requirements: &id002 !ruby/object:Gem::Requirement
26
40
  none: false
27
- requirements:
41
+ requirements:
28
42
  - - ~>
29
- - !ruby/object:Gem::Version
30
- version: 0.9.2
31
- - !ruby/object:Gem::Dependency
43
+ - !ruby/object:Gem::Version
44
+ hash: 61
45
+ segments:
46
+ - 4
47
+ - 0
48
+ - 1
49
+ version: 4.0.1
50
+ prerelease: false
51
+ type: :development
52
+ requirement: *id002
53
+ - !ruby/object:Gem::Dependency
32
54
  name: rspec
33
- requirement: !ruby/object:Gem::Requirement
55
+ version_requirements: &id003 !ruby/object:Gem::Requirement
34
56
  none: false
35
- requirements:
57
+ requirements:
36
58
  - - ~>
37
- - !ruby/object:Gem::Version
59
+ - !ruby/object:Gem::Version
60
+ hash: 7
61
+ segments:
62
+ - 2
63
+ - 2
64
+ - 0
38
65
  version: 2.2.0
39
- type: :development
40
66
  prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ~>
45
- - !ruby/object:Gem::Version
46
- version: 2.2.0
47
- - !ruby/object:Gem::Dependency
67
+ type: :development
68
+ requirement: *id003
69
+ - !ruby/object:Gem::Dependency
48
70
  name: mocha
49
- requirement: !ruby/object:Gem::Requirement
71
+ version_requirements: &id004 !ruby/object:Gem::Requirement
50
72
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 47
77
+ segments:
78
+ - 0
79
+ - 9
80
+ - 10
54
81
  version: 0.9.10
55
- type: :development
56
82
  prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: 0.9.10
63
- - !ruby/object:Gem::Dependency
83
+ type: :development
84
+ requirement: *id004
85
+ - !ruby/object:Gem::Dependency
64
86
  name: rack-test
65
- requirement: !ruby/object:Gem::Requirement
87
+ version_requirements: &id005 !ruby/object:Gem::Requirement
66
88
  none: false
67
- requirements:
68
- - - ! '>='
69
- - !ruby/object:Gem::Version
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ hash: 7
93
+ segments:
94
+ - 0
95
+ - 5
96
+ - 6
70
97
  version: 0.5.6
71
- type: :development
72
98
  prerelease: false
73
- version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ! '>='
77
- - !ruby/object:Gem::Version
78
- version: 0.5.6
79
- - !ruby/object:Gem::Dependency
99
+ type: :development
100
+ requirement: *id005
101
+ - !ruby/object:Gem::Dependency
80
102
  name: activesupport
81
- requirement: !ruby/object:Gem::Requirement
103
+ version_requirements: &id006 !ruby/object:Gem::Requirement
82
104
  none: false
83
- requirements:
84
- - - ! '>='
85
- - !ruby/object:Gem::Version
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ hash: 23
109
+ segments:
110
+ - 3
111
+ - 0
112
+ - 8
86
113
  version: 3.0.8
87
- type: :development
88
114
  prerelease: false
89
- version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
92
- - - ! '>='
93
- - !ruby/object:Gem::Version
94
- version: 3.0.8
95
- - !ruby/object:Gem::Dependency
115
+ type: :development
116
+ requirement: *id006
117
+ - !ruby/object:Gem::Dependency
96
118
  name: wkhtmltopdf-binary
97
- requirement: !ruby/object:Gem::Requirement
119
+ version_requirements: &id007 !ruby/object:Gem::Requirement
98
120
  none: false
99
- requirements:
121
+ requirements:
100
122
  - - ~>
101
- - !ruby/object:Gem::Version
123
+ - !ruby/object:Gem::Version
124
+ hash: 49
125
+ segments:
126
+ - 0
127
+ - 9
128
+ - 5
102
129
  version: 0.9.5
103
- type: :development
104
130
  prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ~>
109
- - !ruby/object:Gem::Version
110
- version: 0.9.5
131
+ type: :development
132
+ requirement: *id007
111
133
  description: Uses wkhtmltopdf to create PDFs using HTML
112
- email:
134
+ email:
113
135
  - jared@codewordstudios.com
114
136
  executables: []
137
+
115
138
  extensions: []
139
+
116
140
  extra_rdoc_files: []
117
- files:
141
+
142
+ files:
118
143
  - .document
119
144
  - .gitignore
120
145
  - .rspec
121
146
  - .travis.yml
147
+ - CHANGELOG.md
122
148
  - Gemfile
123
149
  - Gemfile.lock
124
- - History.md
125
150
  - LICENSE
126
151
  - POST_INSTALL
127
152
  - README.md
@@ -139,31 +164,40 @@ files:
139
164
  - spec/pdfkit_spec.rb
140
165
  - spec/source_spec.rb
141
166
  - spec/spec_helper.rb
142
- homepage: http://github.com/jdpace/PDFKit
167
+ homepage: https://github.com/pdfkit/pdfkit
143
168
  licenses: []
169
+
144
170
  post_install_message:
145
171
  rdoc_options: []
146
- require_paths:
172
+
173
+ require_paths:
147
174
  - lib
148
- required_ruby_version: !ruby/object:Gem::Requirement
175
+ required_ruby_version: !ruby/object:Gem::Requirement
149
176
  none: false
150
- requirements:
151
- - - ! '>='
152
- - !ruby/object:Gem::Version
153
- version: '0'
154
- required_rubygems_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ hash: 3
181
+ segments:
182
+ - 0
183
+ version: "0"
184
+ required_rubygems_version: !ruby/object:Gem::Requirement
155
185
  none: false
156
- requirements:
157
- - - ! '>='
158
- - !ruby/object:Gem::Version
159
- version: '0'
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ hash: 3
190
+ segments:
191
+ - 0
192
+ version: "0"
160
193
  requirements: []
194
+
161
195
  rubyforge_project: pdfkit
162
- rubygems_version: 1.8.24
196
+ rubygems_version: 1.8.25
163
197
  signing_key:
164
198
  specification_version: 3
165
199
  summary: HTML+CSS -> PDF
166
- test_files:
200
+ test_files:
167
201
  - spec/fixtures/example.css
168
202
  - spec/fixtures/example.html
169
203
  - spec/middleware_spec.rb