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.
- checksums.yaml +4 -4
- data/lib/grover.rb +32 -6
- data/lib/grover/version.rb +1 -1
- metadata +15 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 90037348478ac60c7205f57ff6b3fc2013c2cebc
|
|
4
|
+
data.tar.gz: 9b8762974d7b150b0056495ddd4a116719849ffc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4b7cfa2449f703ca0ee14cea8560c051d8f81997f439d90a2d733b622addfc493c9224af8684b6ef0f4bcfa0dd8a7fbad4ced12bd6490d237099b7b26cd5aafc
|
|
7
|
+
data.tar.gz: d37e206d291939ef8771e5ca2999a462aa952ddc266237c54544b99a65f381eab9b656a41e82c1f2da0ceffe1fb7b0e61aa98eb6533b9342b59b2f37c4667b7f
|
data/lib/grover.rb
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
143
|
-
tag_name = meta[
|
|
144
|
-
next
|
|
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[
|
|
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
|
data/lib/grover/version.rb
CHANGED
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.
|
|
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
|