grover 0.4.1 → 0.4.2

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/grover.rb +32 -6
  3. data/lib/grover/version.rb +1 -1
  4. metadata +15 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7c6a07a0ade8c23210286b3501d87f9634c7f66d
4
- data.tar.gz: 149a9096b926444174cd1c4ef1b2425bac25ea9f
3
+ metadata.gz: 90037348478ac60c7205f57ff6b3fc2013c2cebc
4
+ data.tar.gz: 9b8762974d7b150b0056495ddd4a116719849ffc
5
5
  SHA512:
6
- metadata.gz: 6ba6d666daec6b31fabb7484ad74c00787b18184ccb583c6c71fc923c0ac7ee6b9557d45a06a89e0627426af2ad11c2d886970a1eb7776f976d799d8f9280108
7
- data.tar.gz: a7d4fd2f0b140f37b3c3cb5f7d33abcfb67cbe414c6eb79caf9c1ac10f954dfc46f7233e5df04ff3b946a6b1bd6433d1d74ca2bc1713246d4b5bf921ce02f338
6
+ metadata.gz: 4b7cfa2449f703ca0ee14cea8560c051d8f81997f439d90a2d733b622addfc493c9224af8684b6ef0f4bcfa0dd8a7fbad4ced12bd6490d237099b7b26cd5aafc
7
+ data.tar.gz: d37e206d291939ef8771e5ca2999a462aa952ddc266237c54544b99a65f381eab9b656a41e82c1f2da0ceffe1fb7b0e61aa98eb6533b9342b59b2f37c4667b7f
@@ -6,6 +6,7 @@ require 'grover/middleware'
6
6
  require 'grover/configuration'
7
7
 
8
8
  require 'schmooze'
9
+ require 'nokogiri'
9
10
 
10
11
  #
11
12
  # Grover interface for converting HTML to PDF
@@ -112,8 +113,14 @@ class Grover
112
113
  Processor.new(root_path)
113
114
  end
114
115
 
115
- def options_with_template_fix
116
+ def base_options
116
117
  options = @options.dup
118
+ options.merge! meta_options unless url_source?
119
+ options
120
+ end
121
+
122
+ def options_with_template_fix
123
+ options = base_options
117
124
  display_url = options.delete :display_url
118
125
  if display_url
119
126
  options[:footer_template] ||= DEFAULT_FOOTER_TEMPLATE
@@ -128,27 +135,46 @@ class Grover
128
135
 
129
136
  def normalized_options(path)
130
137
  options = Utils.normalize_object options_with_template_fix
131
- options.merge! meta_options unless url_source?
138
+ fix_boolean_options! options
139
+ fix_numeric_options! options
132
140
  options['path'] = path if path
133
141
  options
134
142
  end
135
143
 
144
+ def fix_boolean_options!(options)
145
+ %w[displayHeaderFooter printBackground landscape preferCSSPageSize].each do |opt|
146
+ next unless options.key? opt
147
+ options[opt] = !FALSE_VALUES.include?(options[opt])
148
+ end
149
+ end
150
+
151
+ FALSE_VALUES = [nil, false, 0, '0', 'f', 'F', 'false', 'FALSE', 'off', 'OFF'].freeze
152
+
153
+ def fix_numeric_options!(options)
154
+ return unless options.key? 'scale'
155
+ options['scale'] = options['scale'].to_f
156
+ end
157
+
136
158
  #
137
159
  # Extract out options from meta tags in the source - based on code from PDFKit project
138
160
  #
139
161
  def meta_options
140
162
  meta_opts = {}
141
163
 
142
- @url.scan(/<meta [^>]*>/) do |meta|
143
- tag_name = meta[/name=["']#{Grover.configuration.meta_tag_prefix}([a-z_-]+)["']/, 1]
144
- next if tag_name.nil?
164
+ meta_tags.each do |meta|
165
+ tag_name = meta['name'] && meta['name'][/#{Grover.configuration.meta_tag_prefix}([a-z_-]+)/, 1]
166
+ next unless tag_name
145
167
 
146
- Utils.deep_assign meta_opts, tag_name.split('-'), meta[/content=["']([^"']+)["']/, 1]
168
+ Utils.deep_assign meta_opts, tag_name.split('-'), meta['content']
147
169
  end
148
170
 
149
171
  meta_opts
150
172
  end
151
173
 
174
+ def meta_tags
175
+ Nokogiri::HTML(@url).xpath('//meta')
176
+ end
177
+
152
178
  def url_source?
153
179
  @url.match(/^http/i)
154
180
  end
@@ -1,3 +1,3 @@
1
1
  class Grover
2
- VERSION = '0.4.1'.freeze
2
+ VERSION = '0.4.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grover
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Bromwich
@@ -10,6 +10,20 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2018-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.8.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.8.4
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: schmooze
15
29
  requirement: !ruby/object:Gem::Requirement