premailer 1.8.2 → 1.8.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f49a37803e79dad5aba97c68db82c73b167f172
4
- data.tar.gz: 528bb4f127c4571d5aca3bf396386600050bb6e0
3
+ metadata.gz: b0dc8865cdf0b882aeeb72fccd4b1cd8d6fc7029
4
+ data.tar.gz: 22d249d5230128f64b4b605a25f90bcc1e8fd772
5
5
  SHA512:
6
- metadata.gz: a60e8883cee7b95c700b14390eeab652ca9bd379d2307a15729156f29a3a78323015485fc7310de7f01794c6114a3709fd5d6bde01ca4f8ed6964f89f625375c
7
- data.tar.gz: 441ee16ad13d367e9aa3acc2dde17cf894ef19b745ba0a0330d2a56525208210b93197bea03b36a6c0823fed3aa42de47bcfc77519bf43003c1b0cb95b56ae64
6
+ metadata.gz: 1d28472cc7b50fce5299f6f2a6b1ed98a9c1f04ce2cccafc243e2cdb91ef78ffe29170bcb498b662feba9349200bf2eb956e2fd2efe957a2a27baf6e2a377d42
7
+ data.tar.gz: 729a44fbbf61a243216b08ed0501ea15a7f55d90722811444d815eef4f6884ddb2f10426a590dcf224e3692529b484d824f2b6979679dc994b76a1e94e16ce57
data/.travis.yml CHANGED
@@ -5,19 +5,23 @@ rvm:
5
5
  - 1.9.2
6
6
  - 1.9.3
7
7
  - 2.0.0
8
+ - 2.1.0
8
9
  - ree
9
10
  gemfile:
10
11
  - Gemfile
11
- - gemfiles/ruby187.gemfile
12
+ - gemfiles/.ruby187.gemfile
13
+ env:
14
+ global:
15
+ - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
12
16
  matrix:
13
17
  exclude:
14
18
  - rvm: 1.8.7
15
19
  gemfile: Gemfile
16
20
  - rvm: 1.9.2
17
- gemfile: gemfiles/ruby187.gemfile
21
+ gemfile: gemfiles/.ruby187.gemfile
18
22
  - rvm: 1.9.3
19
- gemfile: gemfiles/ruby187.gemfile
23
+ gemfile: gemfiles/.ruby187.gemfile
20
24
  - rvm: 2.0.0
21
- gemfile: gemfiles/ruby187.gemfile
25
+ gemfile: gemfiles/.ruby187.gemfile
22
26
  - rvm: ree
23
- gemfile: Gemfile
27
+ gemfile: Gemfile
data/.yardopts CHANGED
@@ -4,7 +4,6 @@
4
4
  --no-private
5
5
  --readme README.md
6
6
  --title "Premailer Documentation"
7
- --plugin redcarpet-ext
8
7
  -
9
8
  README.md
10
9
  LICENSE.md
data/README.md CHANGED
@@ -42,7 +42,7 @@ File.open("output.html", "w") do |fout|
42
42
  end
43
43
 
44
44
  # Write the plain-text output
45
- File.open("ouput.txt", "w") do |fout|
45
+ File.open("output.txt", "w") do |fout|
46
46
  fout.puts premailer.to_plain_text
47
47
  end
48
48
 
File without changes
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
21
21
  s.add_dependency('css_parser', '>= 1.3.5')
22
- s.add_dependency('htmlentities', '>= 4.0.0')
22
+ s.add_dependency('htmlentities', [ '>= 4.0.0', '<= 4.3.1' ])
23
23
  s.add_development_dependency "bundler", "~> 1.3"
24
24
  s.add_development_dependency('rake', ['~> 0.8', '!= 0.9.0'])
25
25
  s.add_development_dependency('hpricot', '>= 0.8.3')
@@ -80,7 +80,7 @@ class Premailer
80
80
  # Duplicate CSS attributes as HTML attributes
81
81
  if Premailer::RELATED_ATTRIBUTES.has_key?(el.name)
82
82
  Premailer::RELATED_ATTRIBUTES[el.name].each do |css_att, html_att|
83
- el[html_att] = merged[css_att].gsub(/url\('(.*)'\)/,'\1').gsub(/;$/, '').strip if el[html_att].nil? and not merged[css_att].empty?
83
+ el[html_att] = merged[css_att].gsub(/url\('(.*)'\)/,'\1').gsub(/;$|\s*!important/, '').strip if el[html_att].nil? and not merged[css_att].empty?
84
84
  end
85
85
  end
86
86
 
@@ -102,6 +102,12 @@ class Premailer
102
102
  end
103
103
  end
104
104
 
105
+ if @options[:reset_contenteditable]
106
+ doc.search('*[@contenteditable]').each do |el|
107
+ el.remove_attribute('contenteditable')
108
+ end
109
+ end
110
+
105
111
  if @options[:remove_ids]
106
112
  # find all anchor's targets and hash them
107
113
  targets = []
@@ -76,7 +76,7 @@ class Premailer
76
76
  # Duplicate CSS attributes as HTML attributes
77
77
  if Premailer::RELATED_ATTRIBUTES.has_key?(el.name)
78
78
  Premailer::RELATED_ATTRIBUTES[el.name].each do |css_att, html_att|
79
- el[html_att] = merged[css_att].gsub(/url\('(.*)'\)/,'\1').gsub(/;$/, '').strip if el[html_att].nil? and not merged[css_att].empty?
79
+ el[html_att] = merged[css_att].gsub(/url\('(.*)'\)/,'\1').gsub(/;$|\s*!important/, '').strip if el[html_att].nil? and not merged[css_att].empty?
80
80
  end
81
81
  end
82
82
 
@@ -118,6 +118,12 @@ class Premailer
118
118
  end
119
119
  end
120
120
 
121
+ if @options[:reset_contenteditable]
122
+ doc.search('*[@contenteditable]').each do |el|
123
+ el.remove_attribute('contenteditable')
124
+ end
125
+ end
126
+
121
127
  @processed_doc = doc
122
128
  if is_xhtml?
123
129
  # we don't want to encode carriage returns
@@ -216,9 +222,13 @@ class Premailer
216
222
  doc = ::Nokogiri::HTML(thing, nil, @options[:input_encoding] || default_encoding) {|c| c.recover }
217
223
  end
218
224
 
219
- # Fix for removing any CDATA tags inserted per https://github.com/sparklemotion/nokogiri/issues/311
220
- doc.search("style").children.each do |child|
221
- child.swap(child.text()) if child.cdata?
225
+ # Fix for removing any CDATA tags from both style and script tags inserted per
226
+ # https://github.com/sparklemotion/nokogiri/issues/311 and
227
+ # https://github.com/premailer/premailer/issues/199
228
+ %w(style script).each do |tag|
229
+ doc.search(tag).children.each do |child|
230
+ child.swap(child.text()) if child.cdata?
231
+ end
222
232
  end
223
233
 
224
234
  doc
@@ -26,7 +26,7 @@ module HtmlToPlainText
26
26
  txt.gsub!(/<img.+?alt=\'([^\']*)\'[^>]*\>/i, '\1')
27
27
 
28
28
  # links
29
- txt.gsub!(/<a.+?href=\"(mailto:)?([^\"]*)\"[^>]*>((.|\s)*?)<\/a>/i) do |s|
29
+ txt.gsub!(/<a\s.*?href=\"(mailto:)?([^\"]*)\"[^>]*>((.|\s)*?)<\/a>/i) do |s|
30
30
  if $3.empty?
31
31
  ''
32
32
  else
@@ -34,7 +34,7 @@ module HtmlToPlainText
34
34
  end
35
35
  end
36
36
 
37
- txt.gsub!(/<a.+?href='(mailto:)?([^\']*)\'[^>]*>((.|\s)*?)<\/a>/i) do |s|
37
+ txt.gsub!(/<a\s.*?href='(mailto:)?([^\']*)\'[^>]*>((.|\s)*?)<\/a>/i) do |s|
38
38
  if $3.empty?
39
39
  ''
40
40
  else
@@ -145,8 +145,8 @@ class Premailer
145
145
  # must set the with_html_string option to true.
146
146
  #
147
147
  # @param [Hash] options the options to handle html with.
148
- # @option options [FixNum] :line_length Line length used by to_plain_text. Default is 65.
149
- # @option options [FixNum] :warn_level What level of CSS compatibility warnings to show (see {Premailer::Warnings}).
148
+ # @option options [Fixnum] :line_length Line length used by to_plain_text. Default is 65.
149
+ # @option options [Fixnum] :warn_level What level of CSS compatibility warnings to show (see {Premailer::Warnings}).
150
150
  # @option options [String] :link_query_string A string to append to every <tt>a href=""</tt> link. Do not include the initial <tt>?</tt>.
151
151
  # @option options [String] :base_url Used to calculate absolute URLs for local files.
152
152
  # @option options [Array(String)] :css Manually specify CSS stylesheets.
@@ -156,6 +156,7 @@ class Premailer
156
156
  # @option options [Boolean] :remove_classes Remove class attributes. Default is false.
157
157
  # @option options [Boolean] :remove_comments Remove html comments. Default is false.
158
158
  # @option options [Boolean] :remove_scripts Remove <tt>script</tt> elements. Default is true.
159
+ # @option options [Boolean] :reset_contenteditable Remove <tt>contenteditable</tt> attributes. Default is true.
159
160
  # @option options [Boolean] :preserve_styles Whether to preserve any <tt>link rel=stylesheet</tt> and <tt>style</tt> elements. Default is false.
160
161
  # @option options [Boolean] :preserve_reset Whether to preserve styles associated with the MailChimp reset code. Default is true.
161
162
  # @option options [Boolean] :with_html_string Whether the html param should be treated as a raw string. Default is false.
@@ -176,6 +177,7 @@ class Premailer
176
177
  :remove_ids => false,
177
178
  :remove_comments => false,
178
179
  :remove_scripts => true,
180
+ :reset_contenteditable => true,
179
181
  :css => [],
180
182
  :css_to_attributes => true,
181
183
  :with_html_string => false,
@@ -275,9 +277,9 @@ protected
275
277
  # Load CSS included in <tt>style</tt> and <tt>link</tt> tags from an HTML document.
276
278
  def load_css_from_html! # :nodoc:
277
279
  if (@options[:adapter] == :nokogiri)
278
- tags = @doc.search("link[@rel='stylesheet']", "//style[not(contains(@data-premailer,'ignore'))]")
280
+ tags = @doc.search("link[@rel='stylesheet']:not([@data-premailer='ignore'])", "//style[not(contains(@data-premailer,'ignore'))]")
279
281
  else
280
- tags = @doc.search("link[@rel='stylesheet'], style:not([@data-premailer='ignore'])")
282
+ tags = @doc.search("link[@rel='stylesheet']:not([@data-premailer='ignore']), style:not([@data-premailer='ignore'])")
281
283
  end
282
284
  if tags
283
285
  tags.each do |tag|
@@ -545,4 +547,3 @@ public
545
547
  warnings
546
548
  end
547
549
  end
548
-
@@ -1,4 +1,4 @@
1
1
  class Premailer
2
2
  # Premailer version.
3
- VERSION = '1.8.2'.freeze
3
+ VERSION = '1.8.3'.freeze
4
4
  end
data/premailer.gemspec CHANGED
@@ -18,14 +18,13 @@ Gem::Specification.new do |s|
18
18
  s.files = `git ls-files`.split("\n")
19
19
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
21
- s.add_dependency('css_parser', '>= 1.3.5')
22
- s.add_dependency('htmlentities', '>= 4.0.0')
21
+ s.add_dependency('css_parser', '>= 1.3.6')
22
+ s.add_dependency('htmlentities', [ '>= 4.0.0', '<= 4.3.1' ])
23
23
  s.add_development_dependency "bundler", "~> 1.3"
24
24
  s.add_development_dependency('rake', ['~> 0.8', '!= 0.9.0'])
25
25
  s.add_development_dependency('hpricot', '>= 0.8.3')
26
26
  s.add_development_dependency('nokogiri', '>= 1.4.4')
27
- s.add_development_dependency('yard', '~> 0.8.7')
27
+ s.add_development_dependency('yard', '~> 0.8.7.6')
28
28
  s.add_development_dependency('redcarpet', '~> 3.0')
29
- s.add_development_dependency "yard-redcarpet-ext", "~> 0.0.3"
30
29
  end
31
30
 
@@ -0,0 +1,3 @@
1
+ body {
2
+ color: orange;
3
+ }
@@ -0,0 +1,15 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <title>Should ignore link and style elements with data attribute</title>
5
+ <link rel="stylesheet" type="text/css" href="ignore.css" data-premailer="ignore" />
6
+ <style type="text/css" data-premailer="ignore">
7
+ h1 {
8
+ color: red;
9
+ }
10
+ </style>
11
+ </head>
12
+ <body>
13
+ <h1>Content</h1>
14
+ </body>
15
+ </html>
data/test/test_misc.rb CHANGED
@@ -322,4 +322,52 @@ END_HTML
322
322
  end
323
323
  end
324
324
 
325
+ def test_strip_important_from_attributes
326
+ html = <<END_HTML
327
+ <html>
328
+ <head>
329
+ <style>td { background-color: #FF0000 !important; }</style>
330
+ </head>
331
+ <body>
332
+ <table><tr><td>red</td></tr></table>
333
+ </body>
334
+ </html>
335
+ END_HTML
336
+
337
+ [:nokogiri, :hpricot].each do |adapter|
338
+ premailer = Premailer.new(html, :with_html_string => true, :adapter => adapter)
339
+ assert_match 'bgcolor="#FF0000"', premailer.to_inline_css
340
+ end
341
+ end
342
+
343
+ def test_scripts_with_nokogiri
344
+ html = <<END_HTML
345
+ <html>
346
+ <body>
347
+ <script type="application/ld+json">
348
+ {
349
+ "@context": "http://schema.org",
350
+ "@type": "Person",
351
+ "name": "John Doe",
352
+ "jobTitle": "Graduate research assistant",
353
+ "affiliation": "University of Dreams",
354
+ "additionalName": "Johnny",
355
+ "url": "http://www.example.com",
356
+ "address": {
357
+ "@type": "PostalAddress",
358
+ "streetAddress": "1234 Peach Drive",
359
+ "addressLocality": "Wonderland",
360
+ "addressRegion": "Georgia"
361
+ }
362
+ }
363
+ </script
364
+ </body>
365
+ </html>
366
+ END_HTML
367
+
368
+ premailer = Premailer.new(html, :with_html_string => true, :remove_scripts => false, :adapter => :nokogiri)
369
+ premailer.to_inline_css
370
+
371
+ assert !premailer.processed_doc.css('script[type="application/ld+json"]').first.children.first.cdata?
372
+ end
325
373
  end
@@ -17,7 +17,7 @@ class TestPremailer < Premailer::TestCase
17
17
  end
18
18
 
19
19
  #def test_cyrillic_nokogiri_remote
20
- # if RUBY_VERSION =~ /1.9/
20
+ # if RUBY_VERSION =~ /1.9/
21
21
  # remote_setup('iso-8859-5.html', :adapter => :nokogiri) #, :encoding => 'iso-8859-5')
22
22
  # @premailer.to_inline_css
23
23
  # assert_equal Encoding.find('ISO-8859-5'), @premailer.processed_doc.at('p').inner_html.encoding
@@ -32,7 +32,7 @@ class TestPremailer < Premailer::TestCase
32
32
  premailer.to_inline_css
33
33
  assert_equal 'c&eacute;dille c&eacute; &amp; gar&ccedil;on gar&ccedil;on &agrave; &agrave; &nbsp; &amp;', premailer.processed_doc.at('p').inner_html
34
34
  end
35
-
35
+
36
36
  def test_detecting_html
37
37
  [:nokogiri, :hpricot].each do |adapter|
38
38
  remote_setup('base.html', :adapter => adapter)
@@ -62,7 +62,7 @@ class TestPremailer < Premailer::TestCase
62
62
  assert_match /<br>/, @premailer.to_inline_css
63
63
  end
64
64
  end
65
-
65
+
66
66
  def test_mailtos_with_query_strings
67
67
  html = <<END_HTML
68
68
  <html>
@@ -75,17 +75,33 @@ END_HTML
75
75
  [:nokogiri, :hpricot].each do |adapter|
76
76
  premailer = Premailer.new(html, :with_html_string => true, :link_query_string => qs, :adapter => adapter)
77
77
  premailer.to_inline_css
78
- assert_no_match /testing=123/, premailer.processed_doc.search('a').first.attributes['href'].to_s
78
+ assert_no_match /testing=123/, premailer.processed_doc.search('a').first.attributes['href'].to_s
79
79
  end
80
80
  end
81
-
81
+
82
82
  def test_escaping_strings
83
83
  local_setup
84
-
84
+
85
85
  str = %q{url("/images/test.png");}
86
86
  assert_equal("url(\'/images/test.png\');", Premailer.escape_string(str))
87
87
  end
88
-
88
+
89
+ def test_preserving_ignored_style_elements
90
+ [:nokogiri, :hpricot].each do |adapter|
91
+ local_setup('ignore.html', :adapter => adapter)
92
+
93
+ assert_nil @doc.at('h1')['style']
94
+ end
95
+ end
96
+
97
+ def test_preserving_ignored_link_elements
98
+ [:nokogiri, :hpricot].each do |adapter|
99
+ local_setup('ignore.html', :adapter => adapter)
100
+
101
+ assert_nil @doc.at('body')['style']
102
+ end
103
+ end
104
+
89
105
  def test_importing_local_css
90
106
  # , :hpricot
91
107
  [:nokogiri].each do |adapter|
@@ -93,8 +109,8 @@ END_HTML
93
109
 
94
110
  # noimport.css (print stylesheet) sets body { background } to red
95
111
  assert_no_match /red/, @doc.at('body').attributes['style'].to_s
96
-
97
- # import.css sets .hide to { display: none }
112
+
113
+ # import.css sets .hide to { display: none }
98
114
  assert_match /display: none/, @doc.at('#hide01').attributes['style'].to_s
99
115
  end
100
116
  end
@@ -102,11 +118,11 @@ END_HTML
102
118
  def test_importing_remote_css
103
119
  [:nokogiri, :hpricot].each do |adapter|
104
120
  remote_setup('base.html', :adapter => adapter)
105
-
121
+
106
122
  # noimport.css (print stylesheet) sets body { background } to red
107
123
  assert_no_match /red/, @doc.at('body')['style']
108
-
109
- # import.css sets .hide to { display: none }
124
+
125
+ # import.css sets .hide to { display: none }
110
126
  assert_match /display: none/, @doc.at('#hide01')['style']
111
127
  end
112
128
  end
@@ -130,12 +146,12 @@ END_HTML
130
146
  assert Premailer.local_data?( StringIO.new('a') )
131
147
  assert Premailer.local_data?( '/path/' )
132
148
  assert !Premailer.local_data?( 'http://example.com/path/' )
133
-
149
+
134
150
  # the old way is deprecated but should still work
135
151
  premailer = Premailer.new( StringIO.new('a') )
136
152
  assert premailer.local_uri?( '/path/' )
137
153
  end
138
-
154
+
139
155
  def test_initialize_can_accept_io_object
140
156
  [:nokogiri, :hpricot].each do |adapter|
141
157
  io = StringIO.new('hi mom')
@@ -143,14 +159,14 @@ END_HTML
143
159
  assert_match /hi mom/, premailer.to_inline_css
144
160
  end
145
161
  end
146
-
162
+
147
163
  def test_initialize_can_accept_html_string
148
164
  [:nokogiri, :hpricot].each do |adapter|
149
165
  premailer = Premailer.new('<p>test</p>', :with_html_string => true, :adapter => adapter)
150
166
  assert_match /test/, premailer.to_inline_css
151
167
  end
152
168
  end
153
-
169
+
154
170
  def test_initialize_no_escape_attributes_option
155
171
  html = <<END_HTML
156
172
  <html> <body>
@@ -167,12 +183,12 @@ END_HTML
167
183
  assert_equal doc.at('#noescape')['href'], '{{link_url}}'
168
184
  end
169
185
  end
170
-
186
+
171
187
  def test_remove_ids
172
188
  html = <<END_HTML
173
189
  <html> <head> <style type="text/css"> #remove { color:blue; } </style> </head>
174
190
  <body>
175
- <p id="remove"><a href="#keep">Test</a></p>
191
+ <p id="remove"><a href="#keep">Test</a></p>
176
192
  <p id="keep">Test</p>
177
193
  </body> </html>
178
194
  END_HTML
@@ -187,7 +203,24 @@ END_HTML
187
203
  assert_not_nil doc.at("\##{hashed_id}")
188
204
  end
189
205
  end
190
-
206
+
207
+ def test_reset_contenteditable
208
+ html = <<-___
209
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
210
+ <html> <head> <style type="text/css"> #remove { color:blue; } </style> </head>
211
+ <body>
212
+ <div contenteditable="true" id="editable"> Test </div>
213
+ </body> </html>
214
+ ___
215
+ [:nokogiri, :hpricot].each do |adapter|
216
+ pm = Premailer.new(html, :with_html_string => true, :reset_contenteditable => true, :adapter => adapter)
217
+ pm.to_inline_css
218
+ doc = pm.processed_doc
219
+ assert_nil doc.at('#editable')['contenteditable'],
220
+ "#{adapter}: contenteditable attribute not removed"
221
+ end
222
+ end
223
+
191
224
  def test_carriage_returns_as_entities
192
225
  html = <<-html
193
226
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -201,14 +234,14 @@ END_HTML
201
234
  assert_match /\r/, pm.to_inline_css
202
235
  end
203
236
  end
204
-
205
-
237
+
238
+
206
239
  def test_advanced_selectors
207
240
  remote_setup('base.html', :adapter => :nokogiri)
208
241
  assert_match /italic/, @doc.at('h2 + h3')['style']
209
242
  assert_match /italic/, @doc.at('p[attr~=quote]')['style']
210
243
  assert_match /italic/, @doc.at('ul li:first-of-type')['style']
211
-
244
+
212
245
  remote_setup('base.html', :adapter => :hpricot)
213
246
  assert_match /italic/, @doc.at('p[@attr~="quote"]')['style']
214
247
  assert_match /italic/, @doc.at('ul li:first-of-type')['style']
@@ -294,7 +327,7 @@ END_HTML
294
327
  def test_line_starting_with_uri_in_html_with_linked_css
295
328
  files_base = File.expand_path(File.dirname(__FILE__)) + '/files/'
296
329
  html_string = IO.read(File.join(files_base, 'html_with_uri.html'))
297
-
330
+
298
331
  assert_nothing_raised do
299
332
  premailer = Premailer.new(html_string, :with_html_string => true)
300
333
  premailer.to_inline_css
metadata CHANGED
@@ -1,147 +1,139 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: premailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 1.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dunae
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-14 00:00:00.000000000 Z
11
+ date: 2015-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: css_parser
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.5
19
+ version: 1.3.6
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.3.5
26
+ version: 1.3.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: htmlentities
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 4.0.0
34
+ - - "<="
35
+ - !ruby/object:Gem::Version
36
+ version: 4.3.1
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - '>='
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: 4.0.0
44
+ - - "<="
45
+ - !ruby/object:Gem::Version
46
+ version: 4.3.1
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: bundler
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - ~>
51
+ - - "~>"
46
52
  - !ruby/object:Gem::Version
47
53
  version: '1.3'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - ~>
58
+ - - "~>"
53
59
  - !ruby/object:Gem::Version
54
60
  version: '1.3'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: rake
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ~>
65
+ - - "~>"
60
66
  - !ruby/object:Gem::Version
61
67
  version: '0.8'
62
- - - '!='
68
+ - - "!="
63
69
  - !ruby/object:Gem::Version
64
70
  version: 0.9.0
65
71
  type: :development
66
72
  prerelease: false
67
73
  version_requirements: !ruby/object:Gem::Requirement
68
74
  requirements:
69
- - - ~>
75
+ - - "~>"
70
76
  - !ruby/object:Gem::Version
71
77
  version: '0.8'
72
- - - '!='
78
+ - - "!="
73
79
  - !ruby/object:Gem::Version
74
80
  version: 0.9.0
75
81
  - !ruby/object:Gem::Dependency
76
82
  name: hpricot
77
83
  requirement: !ruby/object:Gem::Requirement
78
84
  requirements:
79
- - - '>='
85
+ - - ">="
80
86
  - !ruby/object:Gem::Version
81
87
  version: 0.8.3
82
88
  type: :development
83
89
  prerelease: false
84
90
  version_requirements: !ruby/object:Gem::Requirement
85
91
  requirements:
86
- - - '>='
92
+ - - ">="
87
93
  - !ruby/object:Gem::Version
88
94
  version: 0.8.3
89
95
  - !ruby/object:Gem::Dependency
90
96
  name: nokogiri
91
97
  requirement: !ruby/object:Gem::Requirement
92
98
  requirements:
93
- - - '>='
99
+ - - ">="
94
100
  - !ruby/object:Gem::Version
95
101
  version: 1.4.4
96
102
  type: :development
97
103
  prerelease: false
98
104
  version_requirements: !ruby/object:Gem::Requirement
99
105
  requirements:
100
- - - '>='
106
+ - - ">="
101
107
  - !ruby/object:Gem::Version
102
108
  version: 1.4.4
103
109
  - !ruby/object:Gem::Dependency
104
110
  name: yard
105
111
  requirement: !ruby/object:Gem::Requirement
106
112
  requirements:
107
- - - ~>
113
+ - - "~>"
108
114
  - !ruby/object:Gem::Version
109
- version: 0.8.7
115
+ version: 0.8.7.6
110
116
  type: :development
111
117
  prerelease: false
112
118
  version_requirements: !ruby/object:Gem::Requirement
113
119
  requirements:
114
- - - ~>
120
+ - - "~>"
115
121
  - !ruby/object:Gem::Version
116
- version: 0.8.7
122
+ version: 0.8.7.6
117
123
  - !ruby/object:Gem::Dependency
118
124
  name: redcarpet
119
125
  requirement: !ruby/object:Gem::Requirement
120
126
  requirements:
121
- - - ~>
127
+ - - "~>"
122
128
  - !ruby/object:Gem::Version
123
129
  version: '3.0'
124
130
  type: :development
125
131
  prerelease: false
126
132
  version_requirements: !ruby/object:Gem::Requirement
127
133
  requirements:
128
- - - ~>
134
+ - - "~>"
129
135
  - !ruby/object:Gem::Version
130
136
  version: '3.0'
131
- - !ruby/object:Gem::Dependency
132
- name: yard-redcarpet-ext
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - ~>
136
- - !ruby/object:Gem::Version
137
- version: 0.0.3
138
- type: :development
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - ~>
143
- - !ruby/object:Gem::Version
144
- version: 0.0.3
145
137
  description: Improve the rendering of HTML emails by making CSS inline, converting
146
138
  links and warning about unsupported code.
147
139
  email: code@dunae.ca
@@ -150,15 +142,15 @@ executables:
150
142
  extensions: []
151
143
  extra_rdoc_files: []
152
144
  files:
153
- - .gitignore
154
- - .jrubyrc
155
- - .travis.yml
156
- - .yardopts
145
+ - ".gitignore"
146
+ - ".jrubyrc"
147
+ - ".travis.yml"
148
+ - ".yardopts"
157
149
  - Gemfile
158
150
  - LICENSE.md
159
151
  - README.md
160
152
  - bin/premailer
161
- - gemfiles/ruby187.gemfile
153
+ - gemfiles/.ruby187.gemfile
162
154
  - gemfiles/ruby187.gemspec
163
155
  - init.rb
164
156
  - lib/premailer.rb
@@ -181,6 +173,8 @@ files:
181
173
  - test/files/dots_h.gif
182
174
  - test/files/html4.html
183
175
  - test/files/html_with_uri.html
176
+ - test/files/ignore.css
177
+ - test/files/ignore.html
184
178
  - test/files/import.css
185
179
  - test/files/inc/2009-placeholder.png
186
180
  - test/files/iso-8859-2.html
@@ -206,17 +200,17 @@ require_paths:
206
200
  - lib
207
201
  required_ruby_version: !ruby/object:Gem::Requirement
208
202
  requirements:
209
- - - '>='
203
+ - - ">="
210
204
  - !ruby/object:Gem::Version
211
205
  version: '0'
212
206
  required_rubygems_version: !ruby/object:Gem::Requirement
213
207
  requirements:
214
- - - '>='
208
+ - - ">="
215
209
  - !ruby/object:Gem::Version
216
210
  version: '0'
217
211
  requirements: []
218
212
  rubyforge_project:
219
- rubygems_version: 2.0.3
213
+ rubygems_version: 2.4.3
220
214
  signing_key:
221
215
  specification_version: 4
222
216
  summary: Preflight for HTML e-mail.
@@ -229,6 +223,8 @@ test_files:
229
223
  - test/files/dots_h.gif
230
224
  - test/files/html4.html
231
225
  - test/files/html_with_uri.html
226
+ - test/files/ignore.css
227
+ - test/files/ignore.html
232
228
  - test/files/import.css
233
229
  - test/files/inc/2009-placeholder.png
234
230
  - test/files/iso-8859-2.html