premailer 1.12.1 → 1.14.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b01f24d73b41f4214ef8ca3b2a1985fe73f52c51b08fd0556ff11b8efda5122
4
- data.tar.gz: bc7cb36fe7064821e1ec20a529b3d1ea6f7e3f77495784bb9ce7b5983f6bea25
3
+ metadata.gz: 58a86c84cdb9f81b643fda4dfd1f724657e73d8ef1ba2775e90e3f38a5e7cbb6
4
+ data.tar.gz: 2e15c7ed98ec6a73c6c8c1daceef050e86dca1496ff63ff84b91c8ebae0992a6
5
5
  SHA512:
6
- metadata.gz: 6ba7b88207293b27f1161ba1f684646b59d7783f334dcd28b562109662873423238c20a6a5b052815f890c05d9509b718c2e341ec6f7a04671a72e7b86bf7c46
7
- data.tar.gz: 7544784edfb822d9d9c5cba949c554e9f208edfa5748567cc5a4a0455615cad3ce0aaed8b93e93235b7dc9e1b1a71c683d87bd317750fb20462fc161ff47294c
6
+ metadata.gz: be8096560990ffc0fa62ae3593add156970263ea37a72d79ff439cc8cd097e0d293f4997ed82c1e78e02406923bda419693a751a9f4bb149388acec81b9cef2a
7
+ data.tar.gz: 3df71e24a57e2d65e1a852aa58b5fa90df4c98cd730c537b678564f4e437b75b8e2c1586a56d0ceb6e23b47b42bcc345373a5b711bf3ae5d453dece723b2bc22
data/README.md CHANGED
@@ -68,7 +68,7 @@ Premailer::Adapter.use = :nokogiri_fast
68
68
 
69
69
  ## Ruby Compatibility
70
70
 
71
- Premailer is tested on Ruby 2.1 and above. JRuby support is close; contributors are welcome. Checkout the latest build status on the [Travis CI dashboard](https://travis-ci.org/#!/premailer/premailer).
71
+ See .travis.yml for which ruby versions are tested. JRuby support is close, contributors are welcome. Checkout the latest build status on the [Travis CI dashboard](https://travis-ci.org/#!/premailer/premailer).
72
72
 
73
73
  ## Premailer-specific CSS
74
74
 
@@ -55,9 +55,7 @@ class Premailer
55
55
  end
56
56
 
57
57
  # Remove script tags
58
- if @options[:remove_scripts]
59
- doc.search("script").remove
60
- end
58
+ doc.search("script").remove if @options[:remove_scripts]
61
59
 
62
60
  # Read STYLE attributes and perform folding
63
61
  doc.search("*[@style]").each do |el|
@@ -75,18 +73,33 @@ class Premailer
75
73
 
76
74
  # Duplicate CSS attributes as HTML attributes
77
75
  if Premailer::RELATED_ATTRIBUTES.has_key?(el.name) && @options[:css_to_attributes]
78
- Premailer::RELATED_ATTRIBUTES[el.name].each do |css_att, html_att|
79
- if el[html_att].nil? and not merged[css_att].empty?
80
- new_html_att = merged[css_att].gsub(/url\(['"](.*)['"]\)/, '\1').gsub(/;$|\s*!important/, '').strip
81
- el[html_att] = css_att.end_with?('color') && @options[:rgb_to_hex_attributes] ? ensure_hex(new_html_att) : new_html_att
76
+ Premailer::RELATED_ATTRIBUTES[el.name].each do |css_attr, html_attr|
77
+ if el[html_attr].nil? and not merged[css_attr].empty?
78
+ new_val = merged[css_attr].dup
79
+
80
+ # Remove url() function wrapper
81
+ new_val.gsub!(/url\((['"])(.*?)\1\)/, '\2')
82
+
83
+ # Remove !important, trailing semi-colon, and leading/trailing whitespace
84
+ new_val.gsub!(/;$|\s*!important/, '').strip!
85
+
86
+ # For width and height tags, remove px units
87
+ new_val.gsub!(/(\d+)px/, '\1') if %w[width height].include?(html_attr)
88
+
89
+ # For color-related tags, convert RGB to hex if specified by options
90
+ new_val = ensure_hex(new_val) if css_attr.end_with?('color') && @options[:rgb_to_hex_attributes]
91
+
92
+ el[html_attr] = new_val
82
93
  end
94
+
83
95
  unless @options[:preserve_style_attribute]
84
96
  merged.instance_variable_get("@declarations").tap do |declarations|
85
- declarations.delete(css_att)
97
+ declarations.delete(css_attr)
86
98
  end
87
99
  end
88
100
  end
89
101
  end
102
+
90
103
  # Collapse multiple rules into one as much as possible.
91
104
  merged.create_shorthand! if @options[:create_shorthands]
92
105
 
@@ -204,7 +217,7 @@ class Premailer
204
217
  @base_dir = File.dirname(input)
205
218
  thing = File.open(input, 'r')
206
219
  else
207
- thing = open(input)
220
+ thing = URI.open(input)
208
221
  end
209
222
 
210
223
  if thing.respond_to?(:read)
@@ -77,18 +77,33 @@ class Premailer
77
77
 
78
78
  # Duplicate CSS attributes as HTML attributes
79
79
  if Premailer::RELATED_ATTRIBUTES.has_key?(el.name) && @options[:css_to_attributes]
80
- Premailer::RELATED_ATTRIBUTES[el.name].each do |css_att, html_att|
81
- if el[html_att].nil? and not merged[css_att].empty?
82
- new_html_att = merged[css_att].gsub(/url\(['"](.*)['"]\)/, '\1').gsub(/;$|\s*!important/, '').strip
83
- el[html_att] = css_att.end_with?('color') && @options[:rgb_to_hex_attributes] ? ensure_hex(new_html_att) : new_html_att
80
+ Premailer::RELATED_ATTRIBUTES[el.name].each do |css_attr, html_attr|
81
+ if el[html_attr].nil? and not merged[css_attr].empty?
82
+ new_val = merged[css_attr].dup
83
+
84
+ # Remove url() function wrapper
85
+ new_val.gsub!(/url\((['"])(.*?)\1\)/, '\2')
86
+
87
+ # Remove !important, trailing semi-colon, and leading/trailing whitespace
88
+ new_val.gsub!(/;$|\s*!important/, '').strip!
89
+
90
+ # For width and height tags, remove px units
91
+ new_val.gsub!(/(\d+)px/, '\1') if %w[width height].include?(html_attr)
92
+
93
+ # For color-related tags, convert RGB to hex if specified by options
94
+ new_val = ensure_hex(new_val) if css_attr.end_with?('color') && @options[:rgb_to_hex_attributes]
95
+
96
+ el[html_attr] = new_val
84
97
  end
98
+
85
99
  unless @options[:preserve_style_attribute]
86
100
  merged.instance_variable_get("@declarations").tap do |declarations|
87
- declarations.delete(css_att)
101
+ declarations.delete(css_attr)
88
102
  end
89
103
  end
90
104
  end
91
105
  end
106
+
92
107
  # Collapse multiple rules into one as much as possible.
93
108
  merged.create_shorthand! if @options[:create_shorthands]
94
109
 
@@ -206,7 +221,7 @@ class Premailer
206
221
  @base_dir = File.dirname(input)
207
222
  thing = File.open(input, 'r')
208
223
  else
209
- thing = open(input)
224
+ thing = URI.open(input)
210
225
  end
211
226
 
212
227
  if thing.respond_to?(:read)
@@ -55,9 +55,7 @@ class Premailer
55
55
  end
56
56
 
57
57
  # Remove script tags
58
- if @options[:remove_scripts]
59
- doc.search("script").remove
60
- end
58
+ doc.search("script").remove if @options[:remove_scripts]
61
59
 
62
60
  # Read STYLE attributes and perform folding
63
61
  doc.search("*[@style]").each do |el|
@@ -75,18 +73,33 @@ class Premailer
75
73
 
76
74
  # Duplicate CSS attributes as HTML attributes
77
75
  if Premailer::RELATED_ATTRIBUTES.has_key?(el.name) && @options[:css_to_attributes]
78
- Premailer::RELATED_ATTRIBUTES[el.name].each do |css_att, html_att|
79
- if el[html_att].nil? and not merged[css_att].empty?
80
- new_html_att = merged[css_att].gsub(/url\(['"](.*)['"]\)/, '\1').gsub(/;$|\s*!important/, '').strip
81
- el[html_att] = css_att.end_with?('color') && @options[:rgb_to_hex_attributes] ? ensure_hex(new_html_att) : new_html_att
76
+ Premailer::RELATED_ATTRIBUTES[el.name].each do |css_attr, html_attr|
77
+ if el[html_attr].nil? and not merged[css_attr].empty?
78
+ new_val = merged[css_attr].dup
79
+
80
+ # Remove url() function wrapper
81
+ new_val.gsub!(/url\((['"])(.*?)\1\)/, '\2')
82
+
83
+ # Remove !important, trailing semi-colon, and leading/trailing whitespace
84
+ new_val.gsub!(/;$|\s*!important/, '').strip!
85
+
86
+ # For width and height tags, remove px units
87
+ new_val.gsub!(/(\d+)px/, '\1') if %w[width height].include?(html_attr)
88
+
89
+ # For color-related tags, convert RGB to hex if specified by options
90
+ new_val = ensure_hex(new_val) if css_attr.end_with?('color') && @options[:rgb_to_hex_attributes]
91
+
92
+ el[html_attr] = new_val
82
93
  end
94
+
83
95
  unless @options[:preserve_style_attribute]
84
96
  merged.instance_variable_get("@declarations").tap do |declarations|
85
- declarations.delete(css_att)
97
+ declarations.delete(css_attr)
86
98
  end
87
99
  end
88
100
  end
89
101
  end
102
+
90
103
  # Collapse multiple rules into one as much as possible.
91
104
  merged.create_shorthand! if @options[:create_shorthands]
92
105
 
@@ -204,7 +217,7 @@ class Premailer
204
217
  @base_dir = File.dirname(input)
205
218
  thing = File.open(input, 'r')
206
219
  else
207
- thing = open(input)
220
+ thing = URI.open(input)
208
221
  end
209
222
 
210
223
  if thing.respond_to?(:read)
@@ -309,7 +309,7 @@ protected
309
309
  link_uri = File.join(File.dirname(@html_file), tag.attributes['href'].to_s.sub!(@base_url.to_s, ''))
310
310
  end
311
311
  # if the file does not exist locally, try to grab the remote reference
312
- unless File.exists?(link_uri)
312
+ unless File.exist?(link_uri)
313
313
  link_uri = Premailer.resolve_link(tag.attributes['href'].to_s, @html_file)
314
314
  end
315
315
  else
@@ -1,4 +1,4 @@
1
1
  class Premailer
2
2
  # Premailer version.
3
- VERSION = '1.12.1'.freeze
3
+ VERSION = '1.14.2'.freeze
4
4
  end
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.12.1
4
+ version: 1.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dunae
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-12 00:00:00.000000000 Z
11
+ date: 2020-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: css_parser
@@ -218,7 +218,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
218
218
  requirements:
219
219
  - - ">="
220
220
  - !ruby/object:Gem::Version
221
- version: 2.3.0
221
+ version: 2.5.0
222
222
  required_rubygems_version: !ruby/object:Gem::Requirement
223
223
  requirements:
224
224
  - - ">="