premailer 1.10.4 → 1.11.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 +4 -4
- data/lib/premailer/adapter/nokogiri.rb +19 -9
- data/lib/premailer/adapter/nokogiri_fast.rb +21 -10
- data/lib/premailer/adapter/nokogumbo.rb +17 -9
- data/lib/premailer/premailer.rb +2 -0
- data/lib/premailer/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1f0cb88ede5d92fb777b596973cb59c69bd02e0
|
4
|
+
data.tar.gz: cb84c900b1160ca8f8c91d3ad74bcd9023dc7c79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f50e404b63d17ae55256615118585baf7eabf443dd56d634ad06ae4a83cc258c6a9b2dd647184f23d03b51decbc0770910f3e886aa558c4cd57fd0950102e1c1
|
7
|
+
data.tar.gz: 0aab4b4d34f52a0e81a3176e3f9508d2637f1a0fb57b0a76efcfbf6f7a24cfbebb80037605cabb8fdea8de87e27f44f69b33c2ba298e816abf68c5220539947f
|
@@ -149,11 +149,17 @@ class Premailer
|
|
149
149
|
def write_unmergable_css_rules(doc, unmergable_rules) # :nodoc:
|
150
150
|
styles = unmergable_rules.to_s
|
151
151
|
unless styles.empty?
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
152
|
+
if @options[:html_fragment]
|
153
|
+
style_tag = ::Nokogiri::XML::Node.new("style", doc)
|
154
|
+
style_tag.content = styles
|
155
|
+
doc.add_child(style_tag)
|
156
|
+
else
|
157
|
+
style_tag = doc.create_element "style", "#{styles}"
|
158
|
+
head = doc.at_css('head')
|
159
|
+
head ||= doc.root.first_element_child.add_previous_sibling(doc.create_element "head") if doc.root && doc.root.first_element_child
|
160
|
+
head ||= doc.add_child(doc.create_element "head")
|
161
|
+
head << style_tag
|
162
|
+
end
|
157
163
|
end
|
158
164
|
doc
|
159
165
|
end
|
@@ -216,12 +222,16 @@ class Premailer
|
|
216
222
|
end
|
217
223
|
# Default encoding is ASCII-8BIT (binary) per http://groups.google.com/group/nokogiri-talk/msg/0b81ef0dc180dc74
|
218
224
|
# However, we really don't want to hardcode this. ASCII-8BIT should be the default, but not the only option.
|
219
|
-
if thing.is_a?(String) and RUBY_VERSION =~ /1.9/
|
225
|
+
encoding = if thing.is_a?(String) and RUBY_VERSION =~ /1.9/
|
220
226
|
thing = thing.force_encoding(@options[:input_encoding]).encode!
|
221
|
-
|
227
|
+
@options[:input_encoding]
|
228
|
+
else
|
229
|
+
@options[:input_encoding] || RUBY_PLATFORM == 'java' ? nil : 'BINARY'
|
230
|
+
end
|
231
|
+
doc = if @options[:html_fragment]
|
232
|
+
::Nokogiri::HTML.fragment(thing, encoding)
|
222
233
|
else
|
223
|
-
|
224
|
-
doc = ::Nokogiri::HTML(thing, nil, @options[:input_encoding] || default_encoding) { |c| c.recover }
|
234
|
+
::Nokogiri::HTML(thing, nil, encoding) { |c| c.recover }
|
225
235
|
end
|
226
236
|
|
227
237
|
# Fix for removing any CDATA tags from both style and script tags inserted per
|
@@ -150,12 +150,19 @@ class Premailer
|
|
150
150
|
# @return [::Nokogiri::XML] a document.
|
151
151
|
def write_unmergable_css_rules(doc, unmergable_rules) # :nodoc:
|
152
152
|
styles = unmergable_rules.to_s
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
153
|
+
unless styles.empty?
|
154
|
+
if @options[:html_fragment]
|
155
|
+
style_tag = ::Nokogiri::XML::Node.new("style", doc)
|
156
|
+
style_tag.content = styles
|
157
|
+
doc.add_child(style_tag)
|
158
|
+
else
|
159
|
+
style_tag = doc.create_element "style", styles
|
160
|
+
head = doc.at_css('head')
|
161
|
+
head ||= doc.root.first_element_child.add_previous_sibling(doc.create_element "head") if doc.root && doc.root.first_element_child
|
162
|
+
head ||= doc.add_child(doc.create_element "head")
|
163
|
+
head << style_tag
|
164
|
+
end
|
165
|
+
end
|
159
166
|
doc
|
160
167
|
end
|
161
168
|
|
@@ -217,12 +224,16 @@ class Premailer
|
|
217
224
|
end
|
218
225
|
# Default encoding is ASCII-8BIT (binary) per http://groups.google.com/group/nokogiri-talk/msg/0b81ef0dc180dc74
|
219
226
|
# However, we really don't want to hardcode this. ASCII-8BIT should be the default, but not the only option.
|
220
|
-
if thing.is_a?(String) and RUBY_VERSION =~ /1.9/
|
227
|
+
encoding = if thing.is_a?(String) and RUBY_VERSION =~ /1.9/
|
221
228
|
thing = thing.force_encoding(@options[:input_encoding]).encode!
|
222
|
-
|
229
|
+
@options[:input_encoding]
|
230
|
+
else
|
231
|
+
@options[:input_encoding] || RUBY_PLATFORM == 'java' ? nil : 'BINARY'
|
232
|
+
end
|
233
|
+
doc = if @options[:html_fragment]
|
234
|
+
::Nokogiri::HTML.fragment(thing, encoding)
|
223
235
|
else
|
224
|
-
|
225
|
-
doc = ::Nokogiri::HTML(thing, nil, @options[:input_encoding] || default_encoding) { |c| c.recover }
|
236
|
+
::Nokogiri::HTML(thing, nil, encoding) { |c| c.recover }
|
226
237
|
end
|
227
238
|
|
228
239
|
# Fix for removing any CDATA tags from both style and script tags inserted per
|
@@ -148,12 +148,19 @@ class Premailer
|
|
148
148
|
# @return [::Nokogiri::XML] a document.
|
149
149
|
def write_unmergable_css_rules(doc, unmergable_rules) # :nodoc:
|
150
150
|
styles = unmergable_rules.to_s
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
151
|
+
unless styles.empty?
|
152
|
+
if @options[:html_fragment]
|
153
|
+
style_tag = ::Nokogiri::XML::Node.new("style", doc)
|
154
|
+
style_tag.content = styles
|
155
|
+
doc.add_child(style_tag)
|
156
|
+
else
|
157
|
+
style_tag = doc.create_element "style", styles
|
158
|
+
head = doc.at_css('head')
|
159
|
+
head ||= doc.root.first_element_child.add_previous_sibling(doc.create_element "head") if doc.root && doc.root.first_element_child
|
160
|
+
head ||= doc.add_child(doc.create_element "head")
|
161
|
+
head << style_tag
|
162
|
+
end
|
163
|
+
end
|
157
164
|
doc
|
158
165
|
end
|
159
166
|
|
@@ -217,10 +224,11 @@ class Premailer
|
|
217
224
|
# However, we really don't want to hardcode this. ASCII-8BIT should be the default, but not the only option.
|
218
225
|
if thing.is_a?(String) and RUBY_VERSION =~ /1.9/
|
219
226
|
thing = thing.force_encoding(@options[:input_encoding]).encode!
|
220
|
-
|
227
|
+
end
|
228
|
+
doc = if @options[:html_fragment]
|
229
|
+
::Nokogiri::HTML5(thing)
|
221
230
|
else
|
222
|
-
|
223
|
-
doc = ::Nokogiri::HTML5(thing)
|
231
|
+
::Nokogiri::HTML5.fragment(thing)
|
224
232
|
end
|
225
233
|
|
226
234
|
# Fix for removing any CDATA tags from both style and script tags inserted per
|
data/lib/premailer/premailer.rb
CHANGED
@@ -177,6 +177,7 @@ class Premailer
|
|
177
177
|
# @option options [Symbol] :adapter Which HTML parser to use, <tt>:nokogiri</tt>, <tt>:nokogiri_fast</tt> or <tt>:nokogumbo</tt>. Default is <tt>:nokogiri</tt>.
|
178
178
|
# @option options [String] :output_encoding Output encoding option for Nokogiri adapter. Should be set to "US-ASCII" to output HTML entities instead of Unicode characters.
|
179
179
|
# @option options [Boolean] :create_shorthands Combine several properties into a shorthand one, e.g. font: style weight size. Default is true.
|
180
|
+
# @option options [Boolean] :html_fragment Handle HTML fragment without any HTML content wrappers. Default is false.
|
180
181
|
def initialize(html, options = {})
|
181
182
|
@options = {:warn_level => Warnings::SAFE,
|
182
183
|
:line_length => 65,
|
@@ -206,6 +207,7 @@ class Premailer
|
|
206
207
|
:escape_url_attributes => true,
|
207
208
|
:unescaped_ampersand => false,
|
208
209
|
:create_shorthands => true,
|
210
|
+
:html_fragment => false,
|
209
211
|
:adapter => Adapter.use,
|
210
212
|
}.merge(options)
|
211
213
|
|
data/lib/premailer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: premailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Dunae
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: css_parser
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.6.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.6.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: htmlentities
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|